在C 11 複製具有唯一指標的類別
為包含unique_ptr 的類別建立複製建構函數,unique_ptr 是一個強制獨佔所有權的智慧指針,提出了獨特的挑戰。在 C 11 中,管理 unique_ptr 成員需要仔細考慮。
解決方案:
要實現複製建構函數,您有兩個選擇:
class A { std::unique_ptr<int> up_; public: A(int i) : up_(new int(i)) {} A(const A& a) : up_(new int(*a.up_)) {} };
std::shared_ptr<int> sp = std::make_shared<int>(*up_);
額外注意事項:
A(A&& a) : up_(std::move(a.up_)) {}
A& operator=(const A& a) { up_.reset(new int(*a.up_)); return *this; } A& operator=(A&& a) { up_ = std::move(a.up_); return *this; }
以上是如何正確複製包含 `unique_ptr` 成員的 C 11 類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!