1. static_cast<type>(var)
将var的类型转换为type。 普通的强制类型转换,系统不会做任何检查。程序员保证类型转换的正确性。
2. dynamic_cast<type>(ptr)
ptr必须是一个指针或地址。将ptr所指的类转换为type。ptr是一个基类的指针类型,type是衍生类。系统在执行时进行检查,如果类继承性关系存在,那么dynamic_cast<type>(ptr)返回一个type*的指针,否则返回nullptr。
3. const_cast<type *>(ptr)
ptr的类型为const type*。const_cast<type *>(ptr)去掉了const,返回type*类型的指针。
4. reinterpret_cast<type>(var)
将var按照该type类解释,var的bit不发生变化。注意:static_cast<type>(var)是会引起bit变化的,例如从double->int,int->double,等等。
reinterpre_cast<type>(var)的应用范围:
从指针类型到一个足够大的整数类型
从整数类型或者枚举类型到指针类型
从一个指向函数的指针到另一个不同类型的指向函数的指针
从一个指向对象的指针到另一个不同类型的指向对象的指针
从一个指向类函数成员的指针到另一个指向不同类型的函数成员的指针
从一个指向类数据成员的指针到另一个指向不同类型的数据成员的指针
C++11类型转换
最新推荐文章于 2024-07-04 17:26:51 发布