我想学习规则(如果有的话(关于使用空格来编写正确的运算符重载。
我见过不同的形式:
T operator+(T t1, T t2) /* etc. */
T operator+ (T t1, T t2) /* etc. */
T operator +(T t1, T t2) /* etc. */
T operator + (T t1, T t2) /* etc. */
我说的是operator
关键字、运算符和第一个括号之间的空格。
哪一个是正确的?比其他人更喜欢什么?他们中的一些人错了吗?或者,在某些情况下他们中的某些人是对的,在其他情况下是错的(反之亦然(?
简而言之:空格在这里(在这个特定的主题中(有什么特殊的意义吗?
如果是,何时以及为什么?如果没有,什么是最佳实践?
除了在字符和字符串文字中,C++代码中唯一一个空格重要的地方是分离将(或可能(以其他方式合并的标记。
在您的情况下,三个标记operator
、+
和(
之间有明显的分隔,因此添加的空格字符对编译器解释声明的方式没有任何影响。
但是,类似Toperator+(T t1, T t2)
的内容是无效的,因为T
和operator
现在将被视为单个(标识符(令牌。
至于哪一个是";最佳"–这实际上是一个品味和意见的问题,尽管cppresence通常使用";没有空间";重载声明的选项。