C++ 类型转换
2016-04-29 16:43
232 查看
C++风格类型转换(引进以下4种类型转换操作符)
1. static_cast 最常用的类型转换符。
int i; float f;
f = static_cast<float>(i);
2. const_cast 去掉const指针的const属性
const int* data;
int* _data = const_cast<int*>(data);
3. dynamic_cast 用于运行时检查类型转换是否类型安全
1) class A{};
class B{};
//B没有虚拟函数,不可以转换
int main(){ A* a = dynamic_cast<A*>(new B); }
2) class A{};
class B{//给类B增加一个虚函数
public:
virtual void b(){}
};
//可以转换
int main(){ A* a = dynamic_cast<A*>(new B); }
4. reinterpret_cast 处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位
1. static_cast 最常用的类型转换符。
int i; float f;
f = static_cast<float>(i);
2. const_cast 去掉const指针的const属性
const int* data;
int* _data = const_cast<int*>(data);
3. dynamic_cast 用于运行时检查类型转换是否类型安全
1) class A{};
class B{};
//B没有虚拟函数,不可以转换
int main(){ A* a = dynamic_cast<A*>(new B); }
2) class A{};
class B{//给类B增加一个虚函数
public:
virtual void b(){}
};
//可以转换
int main(){ A* a = dynamic_cast<A*>(new B); }
4. reinterpret_cast 处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位
相关文章推荐
- 百度登录算法分析和实现(下 - 实现篇)
- C语言memcpy()的用法()
- C++面向对象编程分享09----20160429_设计模式_李楚煌
- C++重载函数与重载运算符
- poj2685——Numeral System新进制系统
- C++ 图像RGB直方图特征提取
- C++11
- C语言复杂表达式和指针高级应用
- 计算方法-C/C++牛顿迭代法求非线性方程近似根
- 计算方法-C/C++二分法求根
- C++中关于函数的引用
- C++中输入输出流运算符的重载
- 【转】C++动态创建二维数组,二维数组指针
- (转)C++静态库与动态库
- C++拷贝构造函数详解
- 使用C++获取文件夹中所有文件名
- C# 调用C++ DLL 返回类型为字符的接口 出现异常 解决办法
- C语言如何不使用“+”号进行加法运算!
- Combination Sum III
- C语言_数组