本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930

最新日志

很伤心,很累
关于个体(individual),实例(
关于个体(individual),实例(
RACER FaCT KAON2和Jen
黄智生博士讲座(zz from bbs.
语义网的相关资源
写呀写
找工作
WCT
IBM公司一些联系地址

最近的评论

回复:一点孤单
回复:找工作
回复:六一儿童节
免费***下载
回复:关于fork()的点点滴滴(1)
回复:关于fork()的点点滴滴(1)
回复:RACER FaCT KAON2和
回复:写给地球另一端的信
回复:WCT
回复:C++命名空间

连接


北邮真情流露   

写信给我:)




[C/C++编程]C++风格的cast
大隐于市 发表于 2005/5/27 0:12:29

C++风格的转型(cast)运算符有什么区别?C++除了C风格的转型运算(直接使用类型关键字)之外,提供了更加具体的转型控制,它们分为static_cast<>,dynamic_cast<>,const_cast<>,reinterpret_cast<>四种。它们具有类似模板的语法,但是实际上是运算符。static_cast用于内建数据类型之间的转型。dynamic_cast用于在继承体系中进行安全的向下转型(downcast),也就是从基类指针/引用向派生类指针/引用的转型。const_cast用于取消变量的常量性修饰。reinterpret_cast用于对变量重新进行二进制解释,因此它的转型结果是编译器实现相关(implementation-dependent)的,不是可移植的,一般在实践中,只有迫不得已,才使用这种转型。例如直接将整数常量转型为某个自定义的struct类型,驱动程序的编写中常常使用这种技术。概念上说,C风格的转型,大致相当于static_cast和const_cast,因为C中没有继承。C++中兼容的C风格转型,基本上按照上面介绍的顺序进行转型,但是对于继承体系中的向下转型,是不安全的,因为它总是试图强制转型,而不是在实际对象不满足转型要求时,转型失败。换句话说,dynamic_cast处理指针/引用时,如果实际的对象不是转型目标或者转型目标的派生类型,会得到空指针或者抛出异常(如果转型的是引用)。因此,在C++中,鼓励的编码风格是使用C++的转型运算符,不推荐使用C风格的转型。

阅读全文(2812) | 回复(0) | 编辑 | 精华


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



公告

暂无公告...

专题

首页(30)
我的论文(1)
数据库应用(0)
XML相关(1)
杂谈(9)
C/C++编程(5)
软件工程(1)
算法与数据结构(0)
Java编程(3)
操作系统(0)
网络资源(2)

留言

签写新留言


统计

blog名称:若望的天地
日志总数:30
评论数量:60
留言数量:0
访问次数:152315
建立时间:2005年5月25日

 

 

 


站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.031 second(s), page refreshed 144780811 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号