1

「Thinking in C++. おそらく明らかなことを見逃していることを許してください:

#include <iostream> // cout

using namespace std;

int main(){
    const int i = 0;
    int* j;
    j = const_cast<int*>(&i);
    *j = 5;
    cout << (&i) << "," << i << "," << j << "," << (*j) << endl;
    system("pause");
}

私のシステムは次を返します:

「0x22ff74,0,0x22ff74,5」

宣言した変数は 2 つだけで、1 つは int を含み、もう 1 つは同じ int へのポインターを含みます。const_cast は「const から nonconst への変換」だと思っていました。では、cout はどのようにして 3 つの異なる値を見つけるのでしょうか?

4

0 に答える 0