Fij*_*dan 4 c++ memory casting exception
假设我有一个名为A的类,以及一个void指针vp.以下是否会导致异常?
A *ap = reinterpret_cast<A*>(vp);
Run Code Online (Sandbox Code Playgroud)
谢谢你,Fijoy
不,既不是reinterpret_cast<T>它的C风格的演员也不执行任何检查,所以它们本身不会导致异常.显然,由于这两种结构都是不安全的,因此取消引用结果指针ap可能会导致未定义的行为.
假设(你可以在你的情况下,因为它是类型void*)表达式 vp不会抛出异常(如果它是一个类型的对象,它有一个手工制作的转换运算符引发异常),那么
A *ap = reinterpret_cast<A*>(vp);
本身不会抛出异常.
解除引用 ap 可能会导致抛出异常.