reinterpret_cast本身可以导致异常吗?

时间:2016-04-28 13:39:29

标签: c++ exception memory casting

假设我有一个名为A的类,以及一个void指针vp。以下是否会导致异常?

A *ap = reinterpret_cast<A*>(vp);

谢谢你, Fijoy

2 个答案:

答案 0 :(得分:6)

不,reinterpret_cast<T>及其C风格的强制转换都不会执行任何检查,因此它们本身不会导致异常。显然,由于这两个构造都是不安全的,因此取消引用结果指针ap可能会导致未定义的行为。

答案 1 :(得分:5)

假设(因为它的类型为void*,你可以这样),表达式 vp不会抛出异常(它可以如果它是一个类型的对象,有一个手工制作的转换运算符抛出异常),那么

A *ap = reinterpret_cast<A*>(vp);

本身不会抛出异常。

解除引用 ap 可能会导致异常被抛出。

相关问题