《C++ Primer》读书笔记第四章-2-类型转换

笔记会持续更新,有错误的地方欢迎指正,谢谢!

隐式类型转换

int a = 3.5 + 3.6; //a=7
算术类型之间的隐式转换原则是尽量避免损失精度。

显示转换

强制类型转换的四大天王:

1.static_cast

任何具有明确定义的类型转换,只要不包含底层const(所指对象为常量),都可以使用它:

double k = static_cast<double>(j) / i;//把j转换成double就行了

以下两种情况常用static_cast:

  1. 把一个较大的算术类型赋值给较小的类型,我们用static_cast相当于告诉编译器,我们不在乎精度损失。
  2. static_cast对于编译器无法自动执行的类型转换也很有用。
    例子:使用static_cast将其强制转换回原来的类型。
    void* p = &d; //任何非常量对象的地址都能存入void*。
    double *dp = static_cast<double*>(p); //转换回来,成为double*。

2.const_cast

作用只有一个,去除底层const,而且你只能用它来去除:
const char *pc; //pc指向const char,是底层const。
char *p = const_cast<char*>(pc); //p是char*,去除了底层const。

3.reinterpret_cast

建议不用,也用不着,就不讲了。

4.旧式强制类型转换

要用到的时候去查一下就好了。

int *pi;
char *pc = (char*) pi;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值