C++. const_cast. 使用上的简单总结

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++来说其是按变量的类型来来解释内存的,一个变量名对应一种解释类型,如果多个不同的变量名对应同一块内存,那么使用不同的变量名就具有了对此块内存的不同操作权限了。

猜你喜欢

转载自blog.csdn.net/paradox_1_0/article/details/105932644