首页 > 编程语言 > 详细

c++的四种强制类型转换

时间:2019-02-26 18:05:17      阅读:167      评论:0      收藏:0      [点我收藏+]

四种强制类型转换的使用形式:  cast-name<type>(expression)   //type为目标,expression为源

1.static_cast

1.概念

1)static_cast用于数据类型的强制转换,只要不包含底层const,都可以使用static_cast

2)static_cast主要的使用场景:

static_cast在用较大类型赋值给较小类型时很有用,如把double值赋值给int,这种精度的损失,编译器会给出警告信息,但是如果使用了static_cast,则没有警告

double b = 1.66;
int a = static_cast<int>(b);    //此时无warning

static_cast对于编译器无法自动执行的类型转换时也很有用

double b = 1.66;
void* p = &b;    //正确,任何非常量对象的地址都可以存入void*
double pp = p;    //错误,编译器无法自动执行这个转换
double pp = static_cast<double*>(p);    //正确,static_cast可以执行这个转换

2.const_cast

1.概念

1)const_cast只能改变对象的底层const

const int a = 2;
const int* p = &a;
int* pp = const_cast<int*>(p);    //改变底层const

const char* cp = "hehe";
char* q = static_cast<char*>(cp);    //错误,static_cast不能改变底层const
string s = static_cast<string>(cp);    //正确,将const char*转换成string
cout << s << endl;    //打印结果:hehe
s = "bb";
cout << s << endl;//打印结果:bb
const_cast<string>(cp);    //错误,const_cast只能改变底层const

2)const_cast常用于函数重载中

3.reinterpret_cast

3.1概念

1)reinterpret_cast为对象的bit模式提供较低层次的重新解释

c++的四种强制类型转换

原文:https://www.cnblogs.com/Joezzz/p/10439040.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!