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;
    change(&pop1,-103);
    change(&pop2,-103);
    cout << "pop1, pop2: " << pop1 << ", " << pop2 << endl;
    return 0;
}

void change(const int * pt, int n)
{
    int *pc;
    pc=const_cast<int *>(pt);
    *pc+=n;
}

const_cast<type-name> (expression)

type-name必须为指针或应用,而且除了const或volatile特征可以不同外,type_name和expression的类型必须相同。

提供该运算符的原因是,有时候可能需要这样一个值,他在大多数时候是常量,而有时又是可以修改的。在这种情况下,可以将这个值声明为const,并在需要修改它的时候,使用const_cast。但const_cast不是万能的,它可以修改指向一个值的指针,但修改const值的结果是不确定的。

原文地址:https://www.cnblogs.com/lakeone/p/3859266.html