// 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*