[C++]引用形参和指针形参的使用场景

[C++]引用形参和指针形参的使用场景

在设计函数时,应根据传入参数的值是否会被改变,来决定是使用引用形参还是指针形参。

  • 当传入的参数会被改变时,使用指针形参。
  • 当传入的参数不会被改变时,使用const修饰的引用形参。
  • 不应存在纯引用形参。

以下示例来自LevelDB源码:

// Open the database with the specified "name".
// Stores a pointer to a heap-allocated database in *dbptr and returns
// OK on success.
// Stores nullptr in *dbptr and returns a non-OK status on error.
// Caller should delete *dbptr when it is no longer needed.
static Status Open(const Options& options, const std::string& name, DB** dbptr)
{
    *dbptr = nullptr;
    DBImpl* impl = new DBImpl(options, dbname);
    ...
    if (s.ok()) {
    assert(impl->mem_ != nullptr);
    *dbptr = impl;
    } else {
        delete impl;
    }
    return s;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容