文章目录
- 前言
- 一、类型转化的四种方式
- 二、每个类型转换的使用以及注意事项
- 1.const_cast
- 2.static_cast
- 3.reinterpret_cast
- 4.dynamic_cast
- 总结
前言
简单记录一下C++中常用的四种类型转换。
提示:以下是本篇文章正文内容,下面案例可供参考
一、类型转化的四种方式
1.去常转换:const_cast
2.静态转换:static_cast
3.动态转换:dynamic_cast
4.重新解释:reinterpret_cast
二、每个类型转换的使用以及注意事项
1.const_cast
const_ cast(a) 常被用于去除这里a变量或表达式的const属性, a的类型就是T
作用:
把常量指针或常量引用转换为非常量指针或非常量引用,并仍然指向原来的对象;把非常量指针或非常量引用转换为常量指针或常量引用,并仍然指向原来的对象;强制转换类型必须是指针*或引用&。
2.static_cast
static_ cast它能在内置的数据类型间互相转换,对于类只能在有联系的指针类型间进行转换.
1.用于基本类型间的转换
2.不能用于基本类型指针间的转换
3.于有继承关系类对象之间的转换和类指针之间的转换
(派生类转换成基类时安全(上行转换),基类转换成派生类时不安全(下行转换))
4.无类型指针的转换(不安全)
int main()
{
int a=10;
void*vi=&10;
float*fp=static_cast<float*>(vi);
}
3.reinterpret_cast
reinterpret_ cast任何指针都可以转换成其它类型的指针,T必须是一个指针、 引用、算术类型、指向函数的指针或指向一个类成员的指针。任何指针都可以转换成其它类型的指针,不安全的转换。
4.dynamic_cast
dynamic_ cast 转换符只能用于指针或者引用。dynamic_cast转换符只能用于含有虚函数的类。dynamic_ cast转换操作符在执行类型转换时首先将检查能否成功转换,如果能成功转换则转换之,如果转换失败, T是指针则反回一个nullptr,如果是转换的是T引用,则抛出一个bad_ cast异常, 所以在使用dynamic_ cast转换之间应使用if语句对其转换成功与否进行测试。
使用条件:公有继承且有虚函数的下行转换,否则会报错!
示例1:
示例2:
总结
提示:这里对文章进行总结:
RTTI(Run Time Type ldentification)即通过运行时类型识别,程序能够使用基类的指针或引用来检查着这些指针或引|用所指的对象的实际派生类型。
RAII也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源、避免内存泄露的方法。它保证在任何情况下,使用对象时先构造对象,最后析构对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)