以下是一个示例代码:

#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;
}

这样做的好处有以下几点:

  1. 避免了拷贝构造和析构函数的调用:通过返回共享指针的引用,避免了拷贝构造函数和析构函数的调用,提高了程序的性能。

  2. 允许修改共享指针所指向的对象:返回共享指针的引用允许对共享指针所指向的对象进行修改,而不需要重新赋值。

  3. 简化代码逻辑:通过返回共享指针的引用,可以直接对共享指针进行操作,而不需要通过中间变量来引用共享指针。

需要注意的是,返回共享指针的引用可能会导致悬空指针(dangling pointer)的问题,因此在使用时需要确保共享指针的生命周期正确管理,避免出现问题

一个函数返回共享指针的引用代码示例这样做有什么好处

原文地址: https://www.cveoy.top/t/topic/irGO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录