为什么const_cast和static_cast对const的引用无效?

时间:2018-10-11 09:05:31

标签: c++ static-cast const-cast

在以下代码中:

    #include<iostream>
    using namespace std;
    int main()
    {
        const int i = 8;
        int j = 90;
        const_cast<int &>(i)  = 10;
        static_cast<const int&> (j);
        j = 200;
        cout << " i = " << i << endl;
        cout << " j = " << j << endl;
   }

我认为输出将是

i = 10
j = 90

但是实际输出是

i = 8
j = 200 

因此,投射不起作用?

1 个答案:

答案 0 :(得分:7)

const_cast<int &>(i) = 10;的行为是未定义。这是因为i最初是const,而您正在丢弃const-ness 尝试写入该对象。这样就可以观察到任何输出。

static_cast<const int&> (j);是无操作的:它不会以某种方式将j转换为const类型。后续j = 200;是一个琐碎的任务