【问题标题】:C++ - return pointer or const reference [closed]C++ - 返回指针或常量引用
【发布时间】:2017-04-07 18:43:29
【问题描述】:

我有一个包含对象向量的容器。

class Container
{
    vector<Foo> objects;

我想要

  • 作为调用者对这些对象具有只读访问权限
  • 避免调用复制构造函数
  • 忽略容器超出范围后访问这些对象的问题(这永远不会发生)

基于此,getter 方法似乎有 2 种选择。要么返回对向量的 const 引用,要么返回指向 const 向量的指针

const vector<Foo> & getRef() { return objects; }
const vector<Foo> * getPtr() { return &objects; }

当然,如果我是调用者,我需要确保在迭代时不调用复制构造函数。所以我要这个

for (const Foo & f : getRef())

而不是

for (Foo f : getRef())

现在,我应该返回 const 引用吗?还是指向 const 的指针?有什么好处和坏处?

【问题讨论】:

  • 当你返回的内容可以为空时,通常会使用指针,但在这种情况下,它是一个向量,所以它不能真的为空。我会使用 const-ref
  • 您的第三个选择,恕我直言,总是更好,是将函数(调用 getter 并使用引用)带入容器 - 因此不需要 getter。请参阅封装:(来自 wiki)“一种语言结构,有助于将数据与操作该数据的方法(或其他功能)捆绑在一起。”

标签: c++ pointers constants return-value


【解决方案1】:

引用更健壮。你不能不小心调用 delete 。

【讨论】:

    猜你喜欢
    • 2013-04-30
    • 2011-02-19
    • 2022-11-10
    • 2014-03-13
    • 2021-10-02
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2016-06-10
    相关资源
    最近更新 更多