The 谷歌 C++ 风格指南 http://google-styleguide.googlecode.com/svn/trunk/cppguide.html做出了明确的区分(严格遵循cplint.py http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py) 输入参数(→ const ref, value)和输入输出或输出参数(→ 非 const 指针)之间:
C/C++ 函数的参数可以是函数的输入、输出
从功能,或两者兼而有之。输入参数通常是值或
const 引用,而输出和输入/输出参数将是
非常量指针。
并进一步 :
事实上,Google 代码中的一个非常严格的约定是,输入参数是值或 const 引用,而输出参数是指针。
但我无法弄清楚为什么输入/输出参数(我将输出参数放在一边)不应通过引用传递。在 stackoverflow 上有很多与这个问题相关的主题:例如here https://stackoverflow.com/questions/3967177/when-to-use-const-and-const-reference-in-function-args,接受的答案清楚地表明
主要是关于风格
但如果
如果你希望能够传递 null,则必须使用指针
那么,有什么意义呢always如果我想避免指针为空,需要一个指针吗?为什么只使用输入参数的引用?
要求输出参数作为指针传递的原因很简单:
它清楚地表明在呼叫站点该论点可能会发生变化:
foo(x, y); // x and y won't be mutated
bar(x, &y); // y may be mutated
当代码库不断发展并经历增量更改(而这些更改由可能并不总是了解整个上下文的人员进行审查)时,能够尽快了解更改的上下文和影响非常重要。因此,有了这个样式规则,就可以立即清楚更改是否会引入突变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)