不允许复制的事实unique_ptr
意味着不超过一个对象可以共享相同的底层数据。如果我在我的类中包含一个对象,unique_ptr
编译器是否足够明智地使隐式复制构造函数成为已删除的函数?
class Blob {
public:
Blob(){}
// Blob(const Blob& rhs){}
unique_ptr<int> upi{make_unique<int>(0)};
};
int main(int argc, char* argv[]) {
Blob b;
cout << *b.upi << endl;
Blob b2(b); // error: Error C2280 'Blob::Blob(const Blob &)': attempting to reference a deleted function
}
如果我取消注释用户定义的复制构造函数的定义,那么只要没有复制unique_ptr
那里就一切正常。