static_cast/dynamic_cast/reinterpret_cast/const_cast

static_cast

  • 对类的指针只能转换有继承关系的类。对普通的指针来说只能在void*和其他指针之间转换。它还可转换简单的类型,比如intchar等。不能提供数字到指针的转换。不能提供不同类型指针之间的转换比如int*char*

dynamic_cast

  • 提供安全的转换如果两个指针不存在继承关系转换会失败返回空指针,如果你提供一个错误的指针那样会发生内存访问异常,因为它会去比较两个类型的虚函数表。虚函数表的指针一般放在对象指针最开始的四字节中,你去访问一个错误的地址这样肯定会发生异常。

reinterpret_cast

  • 提供数字到指针间的转换比如void*int。提供不同类型指针的强制转换比如int*char*。不提供intchar的转换。但是处理类指针转换的时候不能用它,它不会自动的调整指针。

const_cast

  • 把一个const指针转为非const,最好不要用这个转换。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C++中的类型转换分为两种:隐式类型转换;显式类型转换。 而对于隐式变换,在很多时候,不经意间就发生了,比如int...
    DayDayUpppppp阅读 14,926评论 6 26
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,691评论 0 6
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,820评论 0 9
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 5,684评论 0 4
  • 文/07 寒霞雾霭十里茫 楼台远处静谧藏 枯枝风啸残叶黄 不见路人踏清霜 …… 17.10.29晨6点
    723edf844d12阅读 1,540评论 3 8