C++ - 返回指针或常量引用
Posted
技术标签:
【中文标题】C++ - 返回指针或常量引用【英文标题】:C++ - return pointer or const reference [closed] 【发布时间】: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)“一种语言结构,有助于将数据与操作该数据的方法(或其他功能)捆绑在一起。” 【参考方案1】:引用更健壮。你不能不小心调用 delete 。
【讨论】:
以上是关于C++ - 返回指针或常量引用的主要内容,如果未能解决你的问题,请参考以下文章
C++中常量引用指针常量指针指针常量常量引用顶层常量与底层常量