嗨,我有一个基本的问题,如果它是重复的,我很抱歉,但我似乎无法找到我在谷歌寻找的东西。
我有这个功能签名:
ostream& operator<<(ostream& o, const Test& t) {...}
参考的排序&#34;&amp;&#34;我有时把它混淆在函数名/参数的前面:
ostream &operator<<(ostream &o, const Test &t) {...}
这有什么不同或有不同的含义? 任何解释都很棒,谢谢!
编辑:他们在编译时似乎都工作正常,但我应该使用哪一个?答案 0 :(得分:6)
这有什么不同或有不同的含义?
没有区别。
任何解释都会很精彩
通常,空格只会改变程序在分离标记时所需的含义。像&
这样的标点符号不需要与字母数字标记分开,因此您将在此处获得相同的标记序列(ostream
,&
,o
)它们。
我应该使用哪一个?
无论哪种看起来更吸引你。或者,如果你在封建环境中工作,无论你的霸主命令如何。
就个人而言,我在修饰符的两边放置了空格,因为我将其视为与其他标记分开的“单词”。其他人具有不同的美学,将其视为修改类型或变量,并相应地对其进行空间化。
答案 1 :(得分:2)
它们之间没有区别,两者完全相同。空格无关紧要,只有&
位于ostream
和operator<<
之间
所有这些都是等价的:
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}}。
就个人而言,我喜欢把它贴在类型的末尾。