0
class B
{
public:
B(int& a) :ref(a){}
B(B const&) = default;
int& ref;
};
void main()
{
int a1 = 1, a2 = 2;
B b1(a1), b2(b1), b3(a2);
b3 = b1;
}
参照を生成することができない理由コンパイラの実装の暗黙的に定義されたコピー代入演算子は、暗黙的に定義されたコピー代入演算子
B& operator=(const B& rhs)
{
this->ref = rhs.ref;
return *this;
}
ある場合は?変数代入の最初のエイリアスは影響を受けません。これは、コピー代入演算子で参照変数refの数値が変更されるためです。
http://stackoverflow.com/questions/26946201/why-do-reference-type-members-cause-implicitly-declared-copy-assignment-operatorのDUP? –
'main'は' void'ではなく 'int'を返す必要があります。 – melpomene