c++ - 最佳实践 - 从函数返回指针

标签 c++ pointers c++11

<分区>

我只是有一个难题,当函数可能失败时,我应该如何从函数返回智能指针。我可以选择以下选项之一:

  1. 返回指针,如果函数失败则抛出异常:

    std::shared_ptr foo() {
        // ...
        if (!ok)
          throw;
        return ptr;
    }

  1. 返回指针,如果函数失败则返回空指针

    std::shared_ptr foo() {
        // ...
        if (!ok)
            return std::shared_ptr();

        return ptr;
    }

  1. 通过引用传递指针,并返回 bool 标志

    bool foo(std::shared_ptr& ptr) {
        // ...
        if (ok)
            ptr = ...;

        return ok;
    }

是否有任何最佳实践、指南、如何报告该功能未正确执行?或者它通常是特定于项目的?

感谢您的回答

最佳答案

老实说,正确答案取决于被调用函数的作用,以及失败的后果。对于库,我建议要么抛出异常,要么返回一个指示失败的值。通过引用传递指针并返回标志似乎有问题,除非您经常使用该习惯用法,或者如果有理由在外部管理共享指针。

关于c++ - 最佳实践 - 从函数返回指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781463/

相关文章:

c++ - 元组头中对函数 std::get<1> 的引用

c++ - 返回本地创建的 const char*

c++ - 如何将模板类与其 friend 模板类分离到不同的头文件中?

c++ - Exception C++ 第 1 章第 1 部分中的 copy() 算法如何使用?

c - 段错误、指针问题

c - 我是否需要在 BinaryTree 中释放根或数据?

c++ - 抽象类和唯一指针 C++ 错误?

c++ - 类似 Luabind 的语法(索引运算符)

c++ - 是否存在将 double 转换为 long long 的优雅方法?

c++ - Qt C++ setWindowTitle() 两行