shard_ptr 引用
时间: 2023-07-18 21:46:52 浏览: 46
`shared_ptr`可以通过引用传递给函数,这可以避免复制指针的开销,提高程序效率,同时保证内存的正确释放。当`shared_ptr`通过引用传递给函数时,函数可以共享指针的所有权,以确保内存的正确释放。此外,通过引用传递`shared_ptr`还可以使函数更加通用,因为它不会限制指针的类型,可以接受不同类型的`shared_ptr`对象。
下面是一个使用引用传递`shared_ptr`的示例代码:
```
#include <memory>
#include <iostream>
void foo(std::shared_ptr<int>& ptr) {
std::cout << "The shared_ptr count is: " << ptr.use_count() << std::endl;
}
int main() {
std::shared_ptr<int> ptr(new int(42));
std::cout << "The shared_ptr count is: " << ptr.use_count() << std::endl;
foo(ptr);
std::cout << "The shared_ptr count is: " << ptr.use_count() << std::endl;
return 0;
}
```
在这个例子中,`foo()`函数接受一个`shared_ptr`的引用作为参数,并输出指针的引用计数。在`main()`函数中,我们创建了一个`shared_ptr`对象`ptr`,输出其引用计数,然后将其传递给`foo()`函数,输出其引用计数,最后再次输出`ptr`的引用计数。我们可以看到,通过引用传递`shared_ptr`,指针的引用计数得到正确的维护,内存也得到了正确的释放。