c++类型转换

// constcast.cpp -- using const_cast<>
#include <iostream>
using std::cout;
using std::endl;

void change(const int * pt, int n);

int main()
{
    int pop1 = 38383;
    const int pop2 = 2000;
    cout << "pop1, pop2: " << pop1 << ", " << pop2 << endl;

    const int* pop1_cptr = &pop1;
    const int* pop2_cptr = &pop2;
	//const_cast运算符可以删除const int* 中的const
    int* pop1_ptr = const_cast<int*>(pop1_cptr);
    int* pop2_ptr = const_cast<int*>(pop2_cptr);
	//因为上面删除了const, 因此编译器接受修改pop1_ptr
    *pop1_ptr += 103;
    //可以简单理解为这个代码没有生效
    *pop2_ptr += 103;
    //但是由于pop2被声明const, 因此编译器可能禁止修改它
    cout << "pop1, pop2: " << pop1 << ", " << pop2 << endl;
    // std::cin.get();
    return 0;
}

输出结果:

*E:\C++Primer\test\x64\Debug\test.exe
pop1, pop2: 38383, 2000
pop1, pop2: 38486, 2000*
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值