struct A {
int &r;
A (int &i) : r(i) {}
void foo() const {
r = 5; // <--- ok
}
};
コンパイラはr = 5;
にエラーを生成しません。
&r
がすでにであることを意味しますか?const-correctは参考になります(論理的にはint* const
)。 [ここにはrelatedの質問が1つあります]クラスメンバ参照変数には組み込みの "const-correctness"がありますか?
const正確さが '* this'に適用され、メンバではないので、参照されたオブジェクトだけを変更したが、参照自体は変更していないからだ。ポインターの場合と同様に注意してください。 – RedX
@Justin:うん。そのコンストラクタはA(int&i)でなければなりません。 –
...組み込みのconst-incorrectnessと似ていますが、それはあなたが尋ねる人によって異なります... –