sp(new int(10)); ```上面的代码创建了一个int类型的智能指针sp,它指向一个值为10的整数。
2. 使用智能指针访问对象 ```c++
int value = *sp;
```
可以通过*运算符来访问智能指针所指向的对象。
3. 重置智能指针 ```c++
sp.reset(new int(20)); ```
可以通过reset()函数来重置智能指针所指向的对象。上面的代码将sp重新设置为一个值为20的整数。
4. 获取智能指针引用计数 ```c++
int count = sp.use_count(); ```
可以通过use_count()函数获取当前共享该对象的所有智能指针实例数量。上面的代码将count设置为当前共享该对象的所有智能指针实例数量。
5. 将普通指针转换为智能指针 ```c++
std::unique_ptr uptr(new int(30)); std::shared_ptr sptr = std::move(uptr); ```可以使用std::move()函数将一个unique_ptr实例转换为shared_ptr实例。上面的代码将uptr所指向的对象转换为一个shared_ptr实例。
6. 使用自定义删除器 ```c++
void my_deleter(int* p) { delete[] p; }
std::shared_ptr sp(new int[10], my_deleter); ```可以使用自定义删除器来管理动态分配的内存。上面的代码使用my_deleter函数来释放动态分配的int数组。
总之,shared_ptr是一个非常强大和方便的智能指针类,可以帮助我们更好地管理内存。但是需要注意避免循环引用问题,即两个或多个对象互相持有对方的shared_ptr实例,导致内存泄漏。