const_cast是一种C++运算符,主要是用来去除复合类型中const和volatile属性(没有真正去除)。
变量本身的const属性是不能去除的,要想修改变量的值,一般是去除指针(或引用)的const属性,再进行间接修改。
#include <memory>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
const int re_a = 10;
// 要想修改re_a的值怎么修改呢?
// 1. 通过指针
const int *re_p = &re_a;
int *re_p_1 = const_cast<int *>(re_p);
*re_p_1 = 20;
// 此时re_a的值变为了20
// 2. 通过引用
int &re_b = const_cast<int &>(re_a);
re_b = 30;
// 此时re_a的值变为了30
return 0;
}
怎么来理解这种修改方式呢?
对于c++来说其是按变量的类型来来解释内存的,一个变量名对应一种解释类型,如果多个不同的变量名对应同一块内存,那么使用不同的变量名就具有了对此块内存的不同操作权限了。