关于const_cast, static_cast, dynamic_cast和reinterpret_cast

来源:互联网 发布:lol for mac 汉化 编辑:程序博客网 时间:2024/06/07 03:29

1.      const_cast用来移除对象的const属性,也是唯一有此能力的C++-style转型操作符,但是不能为对象添加const属性;

2.      static_cast用于完成编译器隐式执行的类型转化,可以将non-const对象转化为const对象,或将int转为double等等;

3.      dynamic_cast支持运行时识别指针或引用所指向的对象,主要用来执行“安全向下转型”,也就是用来决定某对象是否归属继承体系中的某个类型,它是唯一无法由旧式语法执行的动作,也是唯一可能耗费重大运行成本的转型动作。可以使用它将基类类型的指针或引用转化为派生类的指针或引用,这样的操作通常比较危险,最好用虚函数替代。

4.      reinterpret_cast通常为操作数的为模式提供较低层次的重新解释,实际结果可能取决于编译器,这也就表示它不可移植,它是将操作数按位解释为另一类型的数据,如将一个pointer to int型转为一个int

原创粉丝点击