C++转换运算符之const_cast

C++提供了四个转换运算符:

 c 语言中怎么去除 const 修饰? 比如:const int value=0.2f; int *ptr;ptr 怎么样获取 value 的值?

答:const* int const_p=&value;

       int* ptr=const_cast(const_p);

两种错误的方式:(1)  int modify=&value;(2) int* modify=&value;

传统方式可写成: int* modify=(int*) &value; 

 这部分详细解释可参考http://www.cnblogs.com/ider/archive/2011/07/22/cpp_cast_operator_part2.html

这样修改完成后value还是保留了它原来的值,可是它们指向了同一个地址.此时我们不能修改value的值可是能修改modify的值

为何要去除const限定

(1) 我们可能调用了一个参数不是const的函数,而我们要传进去的实际参数确实const的,但是我们知道这个函数是不会对参数做修改的。于是我们就需要使用const_cast去除const限定,以便函数能够接受这个实际参数。

(2)定义了一个非const的变量,但用带const限定的指针去指向它,在某一处我们突然又想修改了,可是我们手上只有指针,这时候我们可以去const来修改了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值