C++转型操作符
来源:互联网 发布:网络名称大全 编辑:程序博客网 时间:2024/04/30 20:50
解释四个新型操作符的用途:
static_cast: 基本与拥有与C旧式转型相同的威力与意义,以及相同的限制。如:
//计算两个int型数相除,结果为double型int firstNum, secondNum;double res = (double)firstNum / secondNum; //旧式C语法double res = static_cast<double>(firstNum) / secondNum; //新式C++转型符
const_cast: 用来改变表达式中的常量性(constness)或易变性(volatileness)。如:
int num;const int *cpNum = #int *pNum = cpNum; //error:cannot convert from 'const int *' to 'int *'int *pNum = (int *)cpNum; //旧式Cint *pNum = const_cast<int *>(cpNum); //新式C++ const_cast移除常量性
dynamic_cast: 用来执行继承体系中“安全的向下转型或跨系转型动作”。如:
//可以利用dynamic_cast将“指向base class object 的pointer或reference”转型为“指向derived class object的pointer或reference”//如果转型失败,会以一个null指针或一个exception 表现出来class CBase { }; //基类class CDerived: public CBase { }; //继承类CDerived dc;CDerived *dp = &dc;CBase *bp = dynamic_cast<CBase *>(dp); //使用dynamic_cast将指向继承类的指针转化为指向基类的指针 CBase &br = dynamic_cast<CBase &>(dc); //使用dynamic_cast将指向继承类的引用转化为指向基类的引用
reinterpret_cast: 最常用的用途是转换"函数指针"类型。如:
typedef void (*funcPtr)(); //funcPtr是个无参数返回值为void型的函数指针类型int iFunc(){return 0;} //iFunc为一个无参数返回值为int型的函数void func(funcPtr f){} //func函数的参数是一个类型为funcPtr类型的函数指针main(){ func(iFunc()); //error:cannot convert parameter 1 from 'int' to 'void (__cdecl *)(void)' func(reinterpre_cast<funcPtr>(iFunc); //right! reinterpre_cast将返回值为int 的函数转化为 返回值为void 的函数}
0 0
- C++——新式转型操作符
- 转型操作符
- 新式转型操作符
- 转型操作符
- 新型转型操作符
- C++转型操作符
- 转型操作符
- C++转型操作符
- c++ 转型操作符
- C++中的转型操作符
- C++中的转型操作符
- 2. 最好使用C++转型操作符
- 浅谈C++新式转型操作符
- 最好使用C++转型操作符
- 最好使用C++转型操作符
- C++中的四种转型操作符
- 转型操作工具类
- 转型操作工具类
- python classs的一些知识
- String与StringBuffer效率的比较
- 智能指针scoped_ptr,shared_ptr,weak_ptr和auto_ptr的使用
- 【转】Hadoop自定义输入与输出格式
- web service architecture
- C++转型操作符
- 编辑文章 - 博客频道 - CSDN.NET
- poj 3983 快算24
- D - New Year Candles
- opencv中Mat与IplImage,CVMat类型之间转换
- 数据结构——链栈的实现(C语言)
- 梦断华工!
- 用rman恢复数据文件
- SMDK2416 3.5"LCD驱动程序的移植