- 主题:问个基本问题,带unique_ptr的类应该怎么复制?
比如
class A{
std::unique_ptr<int> p;
}
是不是还要给A写一个拷贝构造,通常怎么写?
--
FROM 86.189.131.*
不能复制
--
FROM 115.193.174.*
改成shared_ptr
--
FROM 61.48.129.*
一般这么用就是不想对p深拷贝
不过你非要拷贝,自己实现一下拷贝构造就行了
class A
{
public:
A() = default;
A(const A& x)
{
*this = x;
}
~A() = default;
A& operator=(const A& x)
{
if (this != &x) {
p.reset(x.p ? new int(*x.p) : nullptr);
}
return *this;
}
private:
std::unique_ptr<int> p;
};
【 在 SHENOK 的大作中提到: 】
: 比如
: class A{
: std::unique_ptr<int> p;
: ...................
--
修改:haha103 FROM 182.150.115.*
FROM 182.150.115.*
一般不是做一个深拷贝吗?
我是想问,怎么才能方便的实现深拷贝
或者说怎么知道已经分配空间的大小?
【 在 haha103 的大作中提到: 】
: 一般这么用就是不想对p深拷贝
: 不过你非要拷贝,自己实现一下拷贝构造就行了
: class A
: ...................
--
FROM 86.189.131.*
这么写人家就是告诉你不要深拷贝。
你硬要深拷贝,自己写个构造函数。
【 在 SHENOK 的大作中提到: 】
:
: 一般不是做一个深拷贝吗?
:
: 我是想问,怎么才能方便的实现深拷贝
: 或者说怎么知道已经分配空间的大小?
#发自zSMTH@NOP-AN00
--
FROM 116.224.250.*