跳到主要内容

std::shared_ptr<T>::unique

声明

C++17 中已弃用,C++20 中已移除
bool unique() const noexcept;

检查 *this 是否是管理当前对象的唯一 shared_ptr 实例,即 use_count() == 1

参数

(无)

返回值

如果 *this 是管理当前对象的唯一 shared_ptr 实例,则为 true,否则为 false

备注

此函数在 C++17 中已弃用,在 C++20 中已移除,因为在多线程环境中 use_count 仅为近似值(请参阅 use_count 中的说明)。

示例

#include <memory> 
#include <iostream>

int main()
{
auto sp1 = std::make_shared<int>(5);
std::cout << std::boolalpha;
std::cout << "sp1.unique() == " << sp1.unique() << '\n';

std::shared_ptr<int> sp2 = sp1;
std::cout << "sp1.unique() == " << sp1.unique() << '\n';
}
可能结果
sp1.unique() == true
sp1.unique() == false

std::shared_ptr<T>::unique

声明

C++17 中已弃用,C++20 中已移除
bool unique() const noexcept;

检查 *this 是否是管理当前对象的唯一 shared_ptr 实例,即 use_count() == 1

参数

(无)

返回值

如果 *this 是管理当前对象的唯一 shared_ptr 实例,则为 true,否则为 false

备注

此函数在 C++17 中已弃用,在 C++20 中已移除,因为在多线程环境中 use_count 仅为近似值(请参阅 use_count 中的说明)。

示例

#include <memory> 
#include <iostream>

int main()
{
auto sp1 = std::make_shared<int>(5);
std::cout << std::boolalpha;
std::cout << "sp1.unique() == " << sp1.unique() << '\n';

std::shared_ptr<int> sp2 = sp1;
std::cout << "sp1.unique() == " << sp1.unique() << '\n';
}
可能结果
sp1.unique() == true
sp1.unique() == false