C++中的四种强制类型转换

来源:互联网 发布:大数据徐子沛百度云 编辑:程序博客网 时间:2024/06/05 17:04

C++的四种强制类型转换分别为:static_const,dynamic_cast,const_cast,reinterpret_cast

为什么使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型。那为什么还需要一个新的C++类型的强制转换?

新类型的强制类型转换可以提供更好的控制强制转换过程,允许控制各种不同类的转换。C++中风格是static_cast<type>(content).C++风格的强制转换其他的好处是,他们能更清晰的表明它们要干什么。

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

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

Reinterpret_cast:有着和C风格的强制转换同样的能力。它可以转化任何内置的数据类型为其他任何的数据类型,也可以转化任何指针类型为其他的类型。它甚至可以转化内置的数据类型为指针,无须考虑类型安全转换的类型必须是一个指针、引用、算术类型、函数指针或者成员指针。

Dynamic_cast:

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

2) 不能用于内置的基本数据类型的强制转换

3)Dynamic_cast转换如果成功的话返回的是指向类的指针或引用,转换失败的话会返回NULL

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

5)Dynamic_cast一般是将指向派生类对象的基类指针转换为派生类指针,反之,会返回NULL

0 0
原创粉丝点击