唯一指针如何确保唯一性
How does unique pointer ensure uniqueness?
std::unique_ptr
是一个智能指针,它通过指针保留对象的唯一所有权,并在unique_ptr
超出范围时销毁该对象没有两个unique_ptr
实例可以管理同一个对象
如何确保最后一句话?
我不相信STL中有"某人"会检查已经存在的std::unique_ptr
中是否有一个已经拥有原始指针。即使是一种线性复杂度算法,使用大量的唯一指针也会非常低效。应该有一个不错的技巧,对吧?
不能保证。名称是一个预期用途的声明,而不是运行时系统完全强制执行的任何保证。也就是说,您可以编写以下代码:
std::unique_ptr<int> i1(new int());
std::unique_ptr<int> i2(i1.get());
并且有两个unique_ptr
引用同一个对象,但是程序有未定义的行为,因为它将删除指针两次。
unique_ptr
是不可复制的,这使得意外创建两个这样的指针变得更加困难。C++保护的是墨菲,而不是马基雅维利。
之所以称其为唯一指针,是因为您无法复制唯一指针。您可以窃取它的值,但这会使原始unique_ptr为空。
相关文章:
- 如何确保C++函数在定义之前声明(如override关键字)
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 使用Unique_ptr确保工厂中的对象唯一
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 确保流程关闭
- 如何确保接受的C++模板类型使运算符重载?
- 确保编译时的特定 std::array 位置
- C++ 确保子类为常量提供自定义值
- 确保内存映射页位于内存中
- 确保套装新鲜度的有效方法
- C ++类型特征:确保子类实现方法
- 是否确保 2 个连续的 std::chrono::steady_clock::now() 不相等?
- 如何确保用户在一行上提示输入一次时输入名字和姓氏?
- 确保无变体的型号安全
- 确保特征将 AVX 矢量化用于特定操作
- 确保所有构造函数调用相同的函数 c++ 设计模式
- C++设置了一个用于排序的比较器和另一个用于唯一性的比较器
- 如何确保 Visual C++ 不允许作用域枚举访问?
- 唯一指针如何确保唯一性