关闭

4个类型转换关键字

标签: c++dynamic
206人阅读 评论(0) 收藏 举报
分类:
  • const_cast
  • static_cast
  • dynamic_cast<>
  • reienterpret_cast<>
    经常不被使用的是3和4,重点说之。

dynamic_cast在类的继承关系的前提下使用,没有继承关系的类之间转换会为空。其中虚函数的特性非常重要,在这里重点体现;
如果没有虚函数,该转换也会发生问题。(经常在书上看到RTTI特性和此相关的说明,可能就是这个问题)
1.基类转换到子类,发生错误;(其实也不是错误,就是为空了)(安全性检测的重要性,也就是说不要把基类转换到子类)
2.子类转换到基类,正确,也就是常说的向下转换,调用的也是相应的虚函数;
(测试中发现问题,很简单,用到该关键字就要考虑继承的类之间是否有虚函数表)

reienterpret_cast:
可以把一个指针转换为非指针,同理也可以把非指针转换为指针,很神奇,慎用之。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1819次
    • 积分:97
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类