c++ - const 访问和非常量访问

标签 c++ design-patterns

我有一个内部拥有 foo vector 的类

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

现在我想设计对这个 vector 的公共(public)访问。我正在考虑该函数的两个版本:

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 和非常量访问器在 C++ 中有些常见。没有语言功能可以将两者的代码结合起来——您确实需要编写两次。

顺便说一下,你不需要自己做边界检查,你可以使用 foos_.at(index) 而不是 foos_[index] 然后你'将进行自动边界检查。

关于c++ - const 访问和非常量访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53454489/

相关文章:

JavaScript:模块模式差异

command - 撤消绘画程序

algorithm - 将 4 步 PCAM(福斯特方法)应用于并行算法设计的示例?

c++ - 我可以从不同的线程调用 socket send() 吗?

c++ - 当模态对话框没有焦点时 MFC EndDialog 崩溃

c++ - c++ 类的意外输出

c++ - 包含指向自身的 "implementation"和 "interface"指针的 C++ 类有什么用?

c# - 在不违反开闭原则的情况下重构工厂

c++ - std::poisson_distribution 中可能存在的构造错误

c++ - MySQL C++ 连接器获取带有 SELECT 查询的字符串