const访问和非const访问

时间:2018-11-24 01:43:28

标签: c++ design-patterns

我有一个内部拥有foo向量的类

class bar {
  private:
    vector<Foo> foos_;
}

现在,我想设计对此向量的公共访问。我正在考虑该函数的两个版本:

Foo& getFoo(int index) {
  // first do size checking, return ref
  return foos[index];
}

const Foo& getFoo(int index) const {
  // first do size checking, return const reference
  return foos[index];
}

这种方法有什么缺点吗?一个明显的缺点是我将几乎相同的代码复制了两次。有更好的方法吗?

-----编辑----- 第二个访问者忘记了const,已更新

1 个答案:

答案 0 :(得分:1)

同时具有const和非const访问器在C ++中是很常见的。没有将两种代码都结合起来的语言功能-您确实需要编写两次。

顺便说一句,您不需要自己进行边界检查,可以使用foos_.at(index)代替foos_[index],然后进行自动边界检查。