标题:[求助]About static_cast
只看楼主
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
 问题点数:0 回复次数:2 
[求助]About static_cast

请问一下这段话如果翻译??

However, static_cast relies exclusively on the information provided in the cast statement and can therefore be unsafe

搜索更多相关主题的帖子: cast static About statement 
2006-07-26 15:44
myajax95
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
得分:0 

但是,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是否成功了。

}


http://myajax95./
2006-07-30 13:13
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 

thank you very much!

[此贴子已经被作者于2006-7-31 8:57:39编辑过]


c++/C + 汇编 = 天下无敌
2006-07-31 08:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-80377-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.314749 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved