c++中的各种类型转换
来源:互联网 发布:为什么要学c语言 编辑:程序博客网 时间:2024/06/05 18:53
const_cast:
去掉const属性
const int base = 1;//int *b = &base ; //编译错误int *b = const_cast<int *>(&base) ;
dynamic_cast:
只能用于指针和引用的转换,
可以将父类指针转换成对应的子类指针,但是在向下转换的时候父类一定要有虚函数,否则会编译错误,
如果是转换失败,指针的转换会返回null,引用的转换会抛出异常。
class base {public: base(); virtual ~base();//父类需要有虚函数};class derive : public base {public:};void dynamic_cast_test(){ base *a = new base ; derive *b = dynamic_cast<derive *>(a);//如果转换失败返回NULL}
static_cast:
可以实现基本类型之间的相互转换,
可以实现空类型指针到其他类型指针的转换,
可以实现子类和父类之间的互相转换,
可以实现任何类型转换成void类型。
reinterpret_cast:
可以实现不相关类型的转换,简单的实现二进制的拷贝,并不作任何类型检查,
所以类似于int转向double的情况,就会出问题,因为只是简单的将4个字节的二进制转换给double,而并不满足double的二进制保存方式,
在自己的编译器测试,编译不通过
int aa = 1; int *a = &aa; double *b = reinterpret_cast<double *>(a) ;//这样得到的结果并不是1,而是将整数型的二进制使用浮点型格式解释
阅读全文
0 0
- Objective-C中的BOOL类型各种转换
- c++中的各种类型转换
- 随手收藏,python中的各种类型转换
- c/c++各种字符、字符串类型转换
- c/c++各种字符、字符串类型转换
- C语言各种数值类型转换函数
- C语言各种数值类型转换函数
- c/c++各种字符、字符串类型转换
- C#.NET 中的类型转换
- C#.NET 中的类型转换
- C#.NET 中的类型转换
- C#.NET 中的类型转换
- C#.NET 中的类型转换
- C#.NET 中的类型转换
- C#.NET 中的类型转换
- C#.NET中的类型转换
- c语言中的类型转换
- C#.NET 中的类型转换
- Js C++手动绑定(案例1)
- Codeforces Round #440 div2 B Maximum of Maximums of Minimums
- 编码神器Atom使用详解
- 一个oracle 用户下面创建多个实例
- 小型的Unix系统字符SHELL
- c++中的各种类型转换
- Codeforces Round #440 (Div. 2)C. Maximum splitting
- angularjs 初使用
- OkHttp请求
- BP神经网络的matlab实现
- 表单验证
- 10.15PCA
- angularjs 初使用2
- Codeforces Round #440 div2 A. Search for Pretty Integers