shared_ptr成员函数
时间: 2023-09-16 15:12:37 浏览: 30
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` 等)。这些函数可以根据具体需求进行使用。
shared_ptr.reset函数
shared_ptr.reset函数是C++中用于重置shared_ptr指针的成员函数。它的作用是将shared_ptr指针重新指向一个新的对象或者释放当前指向的对象。
当调用reset函数时,它会首先释放当前指向的对象(如果有),然后将shared_ptr指针重新指向一个新的对象或者置为空指针。
reset函数有两种常见的用法:
1. 重置为新的对象:可以将reset函数用于将shared_ptr指针重新指向一个新的对象。例如:
```
shared_ptr<int> ptr(new int(10));
ptr.reset(new int(20));
```
在上述代码中,首先创建了一个shared_ptr指针ptr,指向一个值为10的整数对象。然后通过reset函数将ptr重新指向一个值为20的整数对象。
2. 释放当前对象:可以将reset函数用于释放当前指向的对象,即将shared_ptr指针置为空指针。例如:
```
shared_ptr<int> ptr(new int(10));
ptr.reset();
```
在上述代码中,通过reset函数将ptr置为空指针,从而释放了原来指向的整数对象。
需要注意的是,当使用reset函数重置shared_ptr指针时,如果该指针是最后一个引用该对象的shared_ptr指针,那么该对象会被自动销毁。