shared_ptr成员函数
时间: 2023-09-16 22:12:37 浏览: 107
shared_ptr是C++11引入的一种智能指针,它封装了指针并且提供了管理指针的功能。shared_ptr提供了很多成员函数,包括get、reset、use_count等。其中get函数返回指向被封装指针的指针,reset函数释放被封装指针并且可以重新赋值,use_count函数返回当前有多少个shared_ptr共享同一个指针。
相关问题
shared_ptr有哪些成员函数
`std::shared_ptr` 是 C++ 标准库中的一个智能指针类,它提供了一些成员函数来管理和操作共享指针的资源。以下是 `std::shared_ptr` 的一些常用成员函数:
1. `explicit shared_ptr(T* ptr = nullptr)`:构造函数,用于创建一个 shared_ptr 对象,并关联指定的原始指针。
2. `shared_ptr(const shared_ptr& other)`:拷贝构造函数,用于创建一个共享指向同一资源的 shared_ptr 对象。
3. `shared_ptr& operator=(const shared_ptr& other)`:拷贝赋值运算符,用于将一个 shared_ptr 对象赋值给另一个对象。
4. `T* get() const`:返回与 shared_ptr 关联的原始指针。
5. `long use_count() const`:返回与 shared_ptr 共享资源的指针计数。
6. `bool unique() const`:检查 shared_ptr 是否是唯一拥有资源的指针。
7. `void reset(T* ptr = nullptr)`:重置 shared_ptr 的关联资源,可选择关联新的原始指针。
8. `void swap(shared_ptr& other)`:交换两个 shared_ptr 对象的关联资源。
9. `T& operator*() const`:解引用操作符,返回共享指针所管理资源的引用。
10. `T* operator->() const`:箭头操作符,返回共享指针所管理资源的指针。
除了上述成员函数外,`std::shared_ptr` 还提供了一些其他的成员函数,如自定义删除器、自定义分配器等,以及与其他类型智能指针的互操作性函数(如转换为 `std::weak_ptr`、`std::unique_ptr` 等)。这些函数可以根据具体需求进行使用。
[[nodiscard]] shared_ptr<const _Ty> shared_from_this() const{ return shared_ptr<const _Ty>(_Wptr) }
这段代码片段是在C++标准库中的智能指针`std::shared_ptr`内部的一个成员函数`shared_from_this()`的实现。`shared_from_this()`是一个用于获取当前对象自身引用的方法,当被其他已经持有该对象引用的共享所有权容器(如`shared_ptr`)所持有时。这里`_Ty`代表指向的对象类型,`const`说明返回的是常量引用。
函数返回了一个`shared_ptr<const _Ty>`类型的临时引用,即一个指向常量对象的共享所有权指针。这个方法的作用是在不需要传递原始对象的情况下,让外部拥有者能够间接访问并控制这个对象,同时保证了线程安全。
示例使用:
```cpp
class MyClass {
public:
std::shared_ptr<const MyClass> shared_from_this() const {
return shared_ptr<const MyClass>(static_cast<MyClass*>(this));
}
};
MyClass obj;
auto shared_ref = obj.shared_from_this();
```
阅读全文