假设我有一个名为A的类,以及一个void指针vp。以下是否会导致异常?
A *ap = reinterpret_cast<A*>(vp);
谢谢你, Fijoy
答案 0 :(得分:6)
不,reinterpret_cast<T>
及其C风格的强制转换都不会执行任何检查,因此它们本身不会导致异常。显然,由于这两个构造都是不安全的,因此取消引用结果指针ap
可能会导致未定义的行为。
答案 1 :(得分:5)
假设(因为它的类型为void*
,你可以这样),表达式 vp
不会抛出异常(它可以如果它是一个类型的对象,有一个手工制作的转换运算符抛出异常),那么
A *ap = reinterpret_cast<A*>(vp);
本身不会抛出异常。
解除引用 ap
可能会导致异常被抛出。