const_cast使用


 9class B
 10 {
 11 public:
 12         B(int a):val(a)
 13         {
 14         }
 15 
 16         ~B()
 17         {
 18         }
 19 
 20         int val;
 21 };
 22 
 23 template<class T>
 24 T& remove_const(const T& val) {return const_cast<T&>(val);}
 25 
 26 
 27 
 28 class A
 29 {
 30 public:
 31         A()
 32         {
 33 
 34         }
 35 
 36         ~A()
 37         {
 38 
 39         }
 40 
 41         template<class T>
 42         void Put(T& t)
 43         {
 44                 B& b = remove_const(t);
 45                 b.val = 2;
 46         }
 47 
 48 
 49 private:
 50         B* ptr;
 51 };


 58 int main()
 59 {
 60         A a;
 61         const B b(1);
 62         a.Put(b);
 63 
 64         const int i = 2;
 65         ++remove_const(i);
 66         cout<<i<<endl;
 67         cout<<b.val<<endl;
 68         return 0;
 69 }

类对象可改变值,内置类型无法改变值;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MyObject-C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值