'const Name& var'或'const Name&变种“?

时间:2010-10-11 00:11:37

标签: c++

  

可能重复:
  What makes more sense - char* string or char *string?

对不起,如果这是一个愚蠢的问题,我是这些东西的新手: - )

我正在开发一个使用以下参考约定的C ++代码库:

  • const Name& var
  • const名称& VAR

据我所知,他们的意思相同。

这些中的哪一个是首选的,还是强制性的?

我不喜欢不得不选择其中一种的含糊不清。

我找到的答案最接近http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Reference_Arguments,它使用& var布局。

6 个答案:

答案 0 :(得分:3)

从语言或编译器的角度来看,两者完全相同。对于组项目,您必须使用组样式。对于个人项目,您可以自由选择。

虽然很难,但就这些主题而言,我总是试着记住来自C++ Coding Standards: 101 Rules, Guidelines, Best Practices的规则#0:

  

不要为小东西出汗。 (或者:知道什么不要标准化。)

如果我有灵活选择,那么就个人而言,我总是喜欢在'*','&','='等两边都有空格,所以我把它写成

const Name & var;

(另外,我从不在一行中声明两个变量。)

答案 1 :(得分:2)

这两个是等价的。差异纯粹是风格之一。

如果您发现自己在一行中声明了多个变量,那么

const Name &var非常有用:

const Name &var, foo, &bar;

Foo是一个名称,但var和bar是对名称的引用。

但是,在一行中声明多个变量通常不赞成。

const Name& var使我们更清楚地知道我们正在处理引用类型(因为引用符号位于类型名称中)。

因此,选择您喜欢哪种风格,并保持一致。使用一致的风格远比使用哪种风格重要。

答案 2 :(得分:1)

正如thyrgle所说,如果项目或文件集使用共同的样式,请使用该样式。但如果您可以自由选择,那么我认为T const& v;更可取。 const展示位置,因为它会推广到包含多个const&展示位置的更复杂的声明,因为在C ++中,焦点在于类型,因为尝试声明它不太自然一个声明中有两个或多个变量。 : - )

干杯,

- Alf

答案 3 :(得分:0)

只要您不涉及模板和运算符,C ++就不关心空白,这对您来说似乎还有一段时间了。简而言之,它们的意思相同,我个人更喜欢“const Name& var”。

答案 4 :(得分:0)

编译器完全相同。

使用你最喜欢的那个。

我更喜欢“const Name& var”,因为对于两个或更多变量来说它看起来更好:“const Name& var,& var2,var3;”例如。

答案 5 :(得分:0)

C ++并不关心空格,所以每个空格都完全相同。但是,您应该使用您的公司或项目主持人正在使用的那个。例如:如果我在Google工作,我会使用& var布局,因为你需要保持一切与他们的风格一致。