這是創建具有參考成員的作業操作員的有效方法嗎?具有參考成員的作業操作員
#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++趨勢表面在不經意未定義的行爲,和所有的說,它是不可能的人,我認爲有一些疑難雜症我錯過了。我錯過了什麼嗎?
順便說,參數爲'操作員='和拷貝構造應該是常量引用。 –
正確性可能僅限於標準佈局類型,因爲虛擬'this'不需要是指向內存塊開始的指針。 –
如果你需要這樣做,我會建議使用引用重新思考。 – bames53