标签:
1、static_cast
正常情况下的类型转换: int i;float f; f=(float)i;或者f=static_cast<float>(i);
2、const_cast
取出const属性, 把const类型的指针变为 非const类型的指针:const int *fun(int x,int y){} int *ptr=const_cast<int *>(fun(1,2))
3、dynamic_cast
运行时检查该转换是否类型安全, 但只在多态类型时合法。在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。
class Base { virtual dummy() {} };
class Derived : public Base {};
Base* b1 = new Derived;
Base* b2 = new Base;
Derived* d1 = dynamic_cast<Derived *>(b1); // succeeds
Derived* d2 = dynamic_cast<Derived *>(b2); // fails: returns ‘NULL‘
4、reinterpret_cast
reinterpret即为重新解释,此标识符的意思即为数据的二进制形式重新解释,但是不改变其值。如:int i; char *ptr="hello freind!"; i=reinterpret_cast<int>(ptr);这个转换方式很少使用。
标签:
原文地址:http://www.cnblogs.com/wmsir/p/4853162.html