C++中类型强制转换

C++中强制类型转换有四种:

1.static_cast

格式:static_cast(Value);
–用于基本类型间的转换,但不能用于基本类型指针间的转换;

int i = 0;
char c = 'C';<br>int *pi = &i;<br>char *pc = &c;
c = static_cast<char>(i);  //没问题,将i转换为char型<br>pc = static_cast<char*>(pi); //不可以,不能用于指针间转换

–用于有继承关系类对象之间的转换和类指针之间的转换;
–static_cast是编译期进行转换的,无法在运行时检测类型,所以类类型之间的转换可能存在风险;

2.const_cast

–用于去除变量的const属性;

const int& j = 1; 
int& k = const_cast<int&>(j);  //将只读变量j去除const属性
k = 5;

const int x = 2;
int& y = const_cast<int&>(x);
y = 3;

printf("x = %d",x);  //打印出来为2,因为编译到上面时已经将x = 2的值送进符号表
printf("y = %d",y);  //打印出来为3,此时x和y的地址相同

3.dynamic_cast

–主要用于类层次间的转换,还可以用于类之间的交叉转换;
–dynamic_cast具有类型检查的功能,比static_cast更安全;

4.reinterpret_cast(直接从二进制位进行复制,不安全的转换)

–用于指针类型间的强制转换;
–用于整数和指针类型间的强制转换;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值