【发布时间】:2018-11-12 03:49:51
【问题描述】:
我一直在研究 SFML,想知道如何构建一个简单的 2D 游戏。我只是注意到这种行为,无法弄清楚发生了什么。让我困惑的示例代码:
struct Unique {};
class Shared {
public:
Shared() {
p = make_unique<Unique>();
}
unique_ptr<Unique> p;
};
void SharedCopyTest() {
Shared foo;
//Shared copy = foo; // Error: function "Shared::Shared(const Shared &)"
// (declared implicitly) cannot be referenced
// -- it is a deleted function
shared_ptr<Shared> sharedPtr = make_shared<Shared>();
shared_ptr<Shared> ptrCopy = sharedPtr; // No error
}
此时,&sharedPtr->p == &ptrCopy->p;但是,如果p 的类型是unique_ptr<T>,这怎么可能?
【问题讨论】:
标签: c++11 smart-pointers ownership-semantics