次のコードについていくらか混乱します。どのようにしてbはまだを参照していますが、異なる値を持っていますか?非constにキャストした後のconst参照の動作
#include <iostream>
using namespace std;
int main()
{
const int a = 5;
const int &b = a;
++(int&)b;
cout << a << endl;//returns 5
cout << b << endl;//returns 6
cout << "mem a:" << &a << endl; //returns 0x61ff18
cout << "mem b:" << &b << endl; //returns 0x61ff18
return 0;
}
あなたはそれが本当にありませんので、コンパイラは "、5で表現' A'を置き換えるようだ右です結局は未定義です。ありがとう – danwin
@ダンウィンええ、そうです。コンパイラが簡単に説明できる何かを選択したことは無関係です。まだ未定義の動作です。 –
@danwin:この動作はC++ ISO標準では定義されていません。これは、コンパイラが生成した動作について理由を付けることが不可能であるということを意味するものではありません。つまり、C++ルールを確実に使用してその理由を推論することはできません。 –