一个函数返回共享指针的引用代码示例这样做有什么好处
以下是一个示例代码:
#include <iostream>
#include <memory>
std::shared_ptr<int>& getSharedPtr() {
static std::shared_ptr<int> ptr = std::make_shared<int>(10);
return ptr;
}
int main() {
std::shared_ptr<int>& ptrRef = getSharedPtr();
std::cout << *ptrRef << std::endl; // 输出:10
*ptrRef = 20;
std::cout << *ptrRef << std::endl; // 输出:20
return 0;
}
这样做的好处有以下几点:
-
避免了拷贝构造和析构函数的调用:通过返回共享指针的引用,避免了拷贝构造函数和析构函数的调用,提高了程序的性能。
-
允许修改共享指针所指向的对象:返回共享指针的引用允许对共享指针所指向的对象进行修改,而不需要重新赋值。
-
简化代码逻辑:通过返回共享指针的引用,可以直接对共享指针进行操作,而不需要通过中间变量来引用共享指针。
需要注意的是,返回共享指针的引用可能会导致悬空指针(dangling pointer)的问题,因此在使用时需要确保共享指针的生命周期正确管理,避免出现问题
原文地址: https://www.cveoy.top/t/topic/irGO 著作权归作者所有。请勿转载和采集!