【发布时间】:2014-07-09 17:06:16
【问题描述】:
是否有充分的理由将所有或大部分引用参数设为 const?
我正在阅读 Google C++ 样式指南,但我不明白为什么“所有通过引用传递的参数都必须标记为 const。” (见here)
- 谁能为此提供一些理由?
- 根据本指南,当方法/函数应该更改对象时,我应该只使用指针吗?
我知道有很多人批评本指南,例如article。我正在寻找一个可以为上述“必须”提供合乎逻辑的论据的答案,而不仅仅是争辩说谷歌是错误的。
【问题讨论】:
-
他们为此提供了自己的理由,即遵循他们的约定的人将为作为引用传入的变量与作为指针传入的变量分配不同的语义。这是他们的风格/约定指南,如果您不同意它,那很好,但是这个问题会带来几乎任意的答案,这些答案将包含在许多不同的编码约定指南中。
-
套用奥斯卡·王尔德的话说,“[风格] 是一种令人难以忍受的丑陋形式,我们必须每六个月改变一次”
-
另外,通过引用传递一些东西可以更快(不需要变量/对象的副本),所以每次优化,有时使用引用可能是一个好主意(因此,当你仍然不想修改原始值,使用
const是合乎逻辑的)。当然,这使得判断他们是使用它来更改输入变量/对象还是仅仅优化有点令人困惑。在我看来,Const-references 可以解决这个问题。 -
为什么我的问题被否决了?我真的不明白一个概念,我寻求帮助。它不是重复的,我认为我的表述是正确的,因为“他们文件中的理由”对我来说不够清楚。如果有人投反对票,请解释原因。
-
我没有投反对票,但这是一个编程问答,而不是 Google 内部政策问答。在 C++ 中,我们有
std::swap、std::getline、std::regex_search以及许多其他修改引用参数的函数。
标签: c++ pointers reference coding-style constants