shared_ptr的内置函数unique使用
时间: 2023-12-27 10:04:30 浏览: 312
shared_ptr的内置函数unique用于判断当前shared_ptr是否是该对象的唯一所有者,即判断当前对象是否只有一个shared_ptr指向。如果是,则返回true,否则返回false。使用方法如下所示:
```C++
#include <iostream>
#include <memory>
int main() {
std::shared_ptr<int> p1(new int(10));
std::shared_ptr<int> p2 = p1;
std::cout << "p1 is unique: " << std::boolalpha << p1.unique() << std::endl; // 输出:p1 is unique: false
std::cout << "p2 is unique: " << std::boolalpha << p2.unique() << std::endl; // 输出:p2 is unique: false
std::shared_ptr<int> p3(new int(20));
std::cout << "p3 is unique: " << std::boolalpha << p3.unique() << std::endl; // 输出:p3 is unique: true
p2.reset();
std::cout << "p1 is unique: " << std::boolalpha << p1.unique() << std::endl; // 输出:p1 is unique: false
std::cout << "p2 is unique: " << std::boolalpha << p2.unique() << std::endl; // 输出:p2 is unique: true
return 0;
}
```
在上述代码中,我们首先创建了两个shared_ptr对象p1和p2,它们都指向同一个int类型的对象。然后我们使用unique函数分别判断了p1和p2是否是该对象的唯一所有者,结果都是false。接着我们创建了一个新的shared_ptr对象p3,它指向一个新的int类型的对象,此时p3是该对象的唯一所有者,unique函数返回true。最后我们使用reset函数将p2重置为空,此时p1不再是该对象的唯一所有者,unique函数返回false,而p2成为了该对象的唯一所有者,unique函数返回true。
阅读全文