热情依然 发表于 2006-7-26 15:44

[求助]About static_cast

<P>请问一下这段话如果翻译??[em03]<BR><BR>However, static_cast relies exclusively on the information provided in the cast statement and can therefore be unsafe</P>

myajax95 发表于 2006-7-30 13:13

<P>但是,static_cast并不依靠cast语句提供的信息而进行操作,所以它是不安全的操作。<BR>两个完全没有关系的class A, B。只要指针类型对了,static_cast就去作。<BR><BR>class A {public: virtual f1(){}};<BR>class B {public: virtual f1(){}};<BR>void main()<BR>{<BR>   B b;<BR>   A *p1 = (A *)(&amp;b), *p2;//这是什么都不检查的C式的cast,完全不相干的类型转换也能通过。<BR><BR>   p2 = static_cast&lt;A *&gt;(p1); // static_cast对p1进行简单的类型判断,发现p1是A*,所以通过,下面出什么事就不知道了。<BR>   p2 = dynamic_cast&lt;A *&gt;(p1); // dynamic_cast查p1的vtable的信息,发现A,B没有继承关系,所以p2是NULL,下面就可以根据p2是不是NULL来判断cast是否成功了。</P>
<P>}</P>

热情依然 发表于 2006-7-31 08:56

<P>thank you very much! [em01]</P>
[align=right][color=#000066][此贴子已经被作者于2006-7-31 8:57:39编辑过][/color][/align]


页: [1]

编程论坛