C ++ - 参考在哪里放?

时间:2015-05-25 15:30:31

标签: c++ function reference

嗨,我有一个基本的问题,如果它是重复的,我很抱歉,但我似乎无法找到我在谷歌寻找的东西。

我有这个功能签名:

ostream& operator<<(ostream& o, const Test& t) {...}

参考的排序&#34;&amp;&#34;我有时把它混淆在函数名/参数的前面:

ostream &operator<<(ostream &o, const Test &t) {...}

这有什么不同或有不同的含义? 任何解释都很棒,谢谢!

编辑:他们在编译时似乎都工作正常,但我应该使用哪一个?

3 个答案:

答案 0 :(得分:6)

  

这有什么不同或有不同的含义?

没有区别。

  

任何解释都会很精彩

通常,空格只会改变程序在分离标记时所需的含义。像&这样的标点符号不需要与字母数字标记分开,因此您将在此处获得相同的标记序列(ostream&o)它们。

  

我应该使用哪一个?

无论哪种看起来更吸引你。或者,如果你在封建环境中工作,无论你的霸主命令如何。

就个人而言,我在修饰符的两边放置了空格,因为我将其视为与其他标记分开的“单词”。其他人具有不同的美学,将其视为修改类型或变量,并相应地对其进行空间化。

答案 1 :(得分:2)

它们之间没有区别,两者完全相同。空格无关紧要,只有&位于ostreamoperator<<之间 所有这些都是等价的:

ostream& operator<<(ostream& o, const Test& t) {...}
ostream & operator<<(ostream & o, const Test & t) {...}
ostream &operator<<(ostream &o, const Test &t) {...}
ostream & operator<<(ostream  & o, const Test    & t) {...} 

以及您能想到的其他组合。

答案 2 :(得分:1)

纯粹是一种风格问题,最重要的是你应该尝试在自己的代码中保持一致,或者在为了可读性而维护的代码中保持一致。

关于哪个是最好的,有不同的哲学观点。 ostream& o提请注意对象o的类型为ostream&,而ostream &o更能提示o是对{ostream的引用这一事实1}}。

就个人而言,我喜欢把它贴在类型的末尾。