| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 1082 人关注过本帖
标题:[求助]About static_cast
收藏  订阅  推荐  打印 
热情依然
Rank: 12Rank: 12Rank: 12
等级:版主
威望:22
帖子:715
积分:7600
注册:2005-4-5
[求助]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-7-26 15:44
myajax95
Rank: 12Rank: 12Rank: 12
等级:版主
威望:30
帖子:2978
积分:30680
注册:2006-3-5

但是,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.bc-cn.net/
2006-7-30 13:13
热情依然
Rank: 12Rank: 12Rank: 12
等级:版主
威望:22
帖子:715
积分:7600
注册:2005-4-5

thank you very much!

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


c++/C + 汇编 = 天下无敌
2006-7-31 08:56
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.060496 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved