C++四种强制类型转换
来源:互联网 发布:算命 知乎 编辑:程序博客网 时间:2024/05/17 08:26
1、概述
去const属性用const_cast。
基本类型转换用static_cast。
多态类之间的类型转换用daynamic_cast。
不同类型的指针类型转换用reinterpreter_cast。
2、详解加示例
a> const_cast
用法:const_cast<类型>(表达式)
用途:删除const属性
示例及结果:
int a=3;const int *b=&a;int *c=const_cast<int*>(b);*c=4;std::cout<<"value: "<<*c<<" "<<*b<<" "<<a<<std::endl;std::cout<<"address:"<<c<<" "<<b<<" "<<&a<<std::endl;
b>static_cast
用法:static_cast<类型>(表达式)
用途:用于非多态类型转换,标准转换,代替C中通常的转换操作。
示例及结果:
int a=3;float f=166.7f;a=static_cast<int>(f);std::cout<<a<<std::endl;
此时a值为166,不用关心转换后精度的损失
c>dynamic_cast
用法:dynamic_cast<类型>(表达式)
用途:将一个指向派生类的基类指针或引用转换为派生类的指针或引用
示例及结果:
#include <iostream>class A{public:A(){}~A(){}virtual void print(){std::cout<<"A::print"<<std::endl;}};class B : public A{public:B(){}~B(){}void print(){std::cout<<"B print"<<std::endl;}void test(){std::cout<<"test"<<std::endl;}};int main(){//dynamic_cast测试A *pA;B *pB,mB;pA=&mB;pB=dynamic_cast<B*>(pA);//pA->test(); //错误语句,test不是A的成员,不可访问pB->test(); //正确dynamic_cast<B*>(pA)->test(); //正确,已经转换为派生类指针return 0;}
注意事项:
dynamic_cast转换符只能用于指针或者引用,只能用于含有虚函数的类。该操作符在执行类型转换时首先将检查能否成功转换,所以在使用之前应使用if语句对其转换成功与否进行测试。
d>reinterpret_cast操作符
表达式:reinterpret_cast<类型>(表达式)
用途:将一种类型转换为另一种不同的类型
0 0
- 【C++】 四种强制类型转换
- 四种强制类型转换
- 四种强制类型转换
- c++高级---C四种强制类型转换的总结
- C++四种强制类型转换
- C++中的四种强制类型转换
- C++的四种强制类型转换
- C++四种强制类型转换
- 四种强制类型转换的总结
- 四种强制类型转换的总结
- 四种c++强制类型转换
- 四种强制转换类型运算符
- C++四种强制类型转换
- C++ 四种强制类型转换
- C++中的四种强制类型转换
- C++四种强制类型转换
- C++四种强制类型转换
- c++中的四种强制类型转换
- 儿子每天都逃学,怎么定位他的手机?QQ1622863529
- QQ的语音被删除了怎么才可以恢复?QQ1622863529
- shell find用法
- java/C++取两个字符串的最大相同子串
- linux的rename命令
- C++四种强制类型转换
- DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录
- 指针和数组在函数中的传递实例
- cloudfoundry servicce-broker部署错误分析
- 实现内存复制函数
- opencv——灰度直方图
- Java IO机制
- linux下创建和删除软、硬链接
- crf