在 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中文网其他相关文章!