#include <new>
struct House { };
struct Room
{
House& h;
Room(House& h) : h(h) { }
};
int main()
{
House h1;
House h2;
Room r(h1);
//r = Room(h2); // This obviously won't work.
///
r.~Room();
new(&r) Room(h2); // This does work
}
我已經在我的項目中使用的參考成員在一個地方,我不知道它是安全的使用這一招的方式與不同的重新初始化對象的引用成員的對象參考。放置新的重新初始化有
'new(r)'應該是'new(&r)'。 – interjay
我從來沒有見過像這些(有parens)的'new'語法,它有什麼作用?我從來沒有見過在任何C++書中提到過的我讀過 – johnbakers
從形式上說,它不會重新初始化對象,但會破壞對象,然後在舊對象中創建一個新對象。非正式地,這通常表明您的設計應該重新初始化。 – molbdnilo