1.静态类型转换
static_cast<目标类型>(源类型对象)
作用: 1、用于基本数据类型之间的转换,如把int转换成char,两个对象只要有一个方向上能做隐式转换,那么两个方向上都可以做静态类型转换;
2、也可用于子类指针、引用向父类指针、引用的转换;如果是父类向子类转,能成功但是不安全,结果未知;
限制:编译过程中会判断是否能进行静态类型转换,如果不能,报错
2.动态类型转换
dynamic_cast<目标类型>(源类型对象)
作用:用于父类对象指针(或引用)和子类对象指针(或引用)之间的转换
限制:1、源类型和目标类型必须是引用或者指针,而且源类型和目标类型存在着的继承关系,否则报错
2、在类层次间进行上行转换(子到父)时,dynamic_cast和static_cast的效果是一样的;在进行下行转换(父到子)时,dynamic_cast具有类型检查的功能:
(1)父类必须有虚函数;
(2)父类指针或引用确实指向子类对象;
比static_cast更安全。
3.去常类型转换
const_cast<目标类型>(源类型对象)
作用: 将常类型(const修饰的)指针或引用转化成非常的指针或引用;
限制: 源类型和目标类型必须是指针或者引用,而且源类型和目标类型只是在常属性上有区别,否则报错
4.重解释类型转换
reinterpret_cast<目标类型>(源类型对象)
作用: 1、用于指针之间的类型转换
2、用于引用之间的类型转换
2、指针到整型、整型到指针的转换
限制: 源类型和目标类型必须是指针,或者引用,或者一个是指针一个是整型,否则报错
因为地址(指针)本质是一个整数,任何数据类型的地址都是4或8个字节,那么任何一个地址都可以解释为其它类型的地址
C++ 强制类型转换
最新推荐文章于 2024-04-13 20:22:04 发布