참조 멤버가있는 대입 연산자를 만드는 올바른 방법입니까?참조 멤버가있는 할당 연산자
#include <new>
struct A
{
int &ref;
A(int &Ref) : ref(Ref) { }
A(const A &second) : ref(second.ref) { }
A &operator =(const A &second)
{
if(this == &second)
return *this;
this->~A();
new(this) A(second);
return *this;
}
}
컴파일하고 잘 실행 보이지만, C++ 경향 적어도 예상 정의되지 않은 동작을 표면, 그것의 불가능을 말하는 모든 사람들은, 내가 놓친 몇 가지 잡았다가 있다고 생각합니다. 내가 놓친 게 있니?
, 연산자'에 대한 인수 ='와 복사 생성자는 const를 참조해야한다. –
'this'는 메모리 블록의 시작 부분에 대한 포인터 일 필요가 없기 때문에 정확성은 표준 레이아웃 유형으로 제한 될 수 있습니다. –
이 작업을 수행해야하는 경우 참조를 사용하여 다시 생각해 보시기 바랍니다. – bames53