显示转换

---------------------------------------------------------------------------------------------------------------------------------

static_cast

    任何具有明确定义的类型转换, 只要不包含底层const, 都可以使用static_cast。

   int i, j;

    double slope = static_cast<double> j / i ; //将j从int类型显示的强制转换成double类型

    强制转换告诉读者和编译器, 不在乎精度的损失。

    static_cast 对于编译器无法自动执行的类型转换非常有用。

   void* p = &d;  //任何常量对象的指针都能存入

    double *dp = static_cast<double* >(p); //将void转换成初始的指针类型。

    把指针存放在void* 中, 并且使用static_cast将其强制转换回原来的类型时, 应该确保指针的值保持不变(前后指针类型一样)。

    ---------------------------------------------------------------------------------------------------------------------------------

const_cast(将常量对象改变为非常量对象)

    const_cast只能改变运算对象的底层const(指针所指的对象是常量)。

    const char *pc;

    char *p = const_cast<char *> (pc); //正确, 但是通过p写值是未定义的行为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值