[求助]About static_cast
请问一下这段话如果翻译??
However, static_cast relies exclusively on the information provided in the cast statement and can therefore be unsafe
请问一下这段话如果翻译??
However, static_cast relies exclusively on the information provided in the cast statement and can therefore be unsafe
但是,static_cast并不依靠cast语句提供的信息而进行操作,所以它是不安全的操作。
两个完全没有关系的class A, B。只要指针类型对了,static_cast就去作。
class A {public: virtual f1(){}};
class B {public: virtual f1(){}};
void main()
{
B b;
A *p1 = (A *)(&b), *p2;//这是什么都不检查的C式的cast,完全不相干的类型转换也能通过。
p2 = static_cast<A *>(p1); // static_cast对p1进行简单的类型判断,发现p1是A*,所以通过,下面出什么事就不知道了。
p2 = dynamic_cast<A *>(p1); // dynamic_cast查p1的vtable的信息,发现A,B没有继承关系,所以p2是NULL,下面就可以根据p2是不是NULL来判断cast是否成功了。
}