2012-07-09 71 views
6

我看到了兩個合理的解決方案,以一個參數的成員取得所有權的問題:成員取得所有權

Foo::Foo(std::unique_ptr<int> parameter) 
: member(std::move(parameter)) 
{ 
} 

Bar::Bar(std::unique_ptr<int> parameter) 
{ 
    member.swap(parameter); 
} 

哪一個是更地道,更容易理解,更容易調試,維護更方便等等。?

有沒有額外的解決方案來解決我錯過的問題?

回答

12

始終支持初始值設定項列表。另外,它涵蓋了可以移動但不能交換的類型,或者可能必須執行用於默認構造的昂貴操作的類型,或者確實是不能被默認構建的類型。