Mus*_*shy 6 c++ singleton unique-ptr
std::unique_ptr唯一地控制它指向的对象,因此不利用引用计数.单例确保只能使用引用计数创建一个对象.
那么std::unique_ptr与单身人士的表现相同吗?
那么std :: unique_ptr会表现出与单身人士相同的表现吗?
不,让我们说我们有Foo课程,打算成为单身人士.使用典型的单例模式,无法构造多个Foo.
有一个std::unique_ptr<Foo>方法将有一个指向Foo的特定实例的指针,但这不会阻止创建其他Foo实例(使用其他unique_ptrs或使用指向本地变量的原始指针).因此,Foo,不会是单身人士.
std::unique_ptr 通过仅提供移动构造函数而没有复制构造函数或赋值运算符来实现单一所有权语义。
这根本不是单例的情况,因为您可以有多个unique_ptrs引用相同类型的不同实例。单例不允许您直接构造类型,而是提供管理唯一实例的访问器。
此外,德鲁断言
“unique_ptr 确保只有一个智能指针指向任何实例。”
是假的。如果你只是这样做:
T* nt = new T;
std::unique_ptr<T> up1(nt);
std::unique_ptr<T> up2(nt);
Run Code Online (Sandbox Code Playgroud)
那么你有两个唯一的指针拥有相同的资源——你只会在运行时注意到问题,而不是编译时。当然,这是 的不正确用法unique_ptr,但这强调了 aunique_ptr并不能确保您做任何事情,它只是一个指针容器,从它自己的角度来看拥有唯一的所有权,并且通过它的 api,很难意外地创建临时副本。
此外,您可以让其他(智能)指针类型独立于任何unique_ptr. 完全取决于使用代码来定义其资源和智能指针实例的所有权和生命周期策略
| 归档时间: |
|
| 查看次数: |
5191 次 |
| 最近记录: |