C++ 四种类型转换关键字介绍

C++有四种类型转换关键字,分别是:

            (1) . static_cast      (2)  const_cast   (3)  reinterpret_cast   (4) dynamic_cast

这四种类型转换关键字分别使用在不同的情况下。下文对这四个关键字进行比较分析:

             (1).static_cast   : 可以实现C++中内置基本数据类型之间的转换,如果涉及到类的话,static_cast只能在相互联系的类型中进行相互转换,不一定包含虚函数。

             (2).const_cast : 不能在不同种类间转换。相反,它仅仅把一个它作用的表达式转换成常量。它可以使一个本来不是const类型的数据转换成const类型的,或者把const属性去掉。

             (3).reinterpret_cast: 有着和c风格的强制转换同样的能力。它可以转化任何内置的数据类型为其他任何的数据类型,也可以转换任何指针类型为其他的类型。它甚至可以转化内置的数据类型为指针,无需考虑类型安全或者常量的情形。不到万不得已,不要轻易使用。

             (4).dynamic_cast : 

                               <1> : 其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行类型检查。

                               <2> :不能用于内置的基本数据类型的强制转换。

                               <3> : dynamic_cast转换如果成功的话,返回的是指向类的指针或者引用,转换失败的话则返回NULL。

                              <4> : 使用dynamic_cast进行转换时,基类中一定要有虚函数,否则编译不通过。






你可能感兴趣的:(c++基本概念,c++,类型转换,static_cast,const_cast)