C++ 运算符重载,表达式中空格的规则
C++ operators overload, rules for spaces in expression
我想了解规则(如果有的话)关于使用spaces的正确书写运算符重载.
我见过不同的形式:
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
关键字、运算符字符和第一个括号之间的 space(s)。
哪一个是正确的?比其他人更喜欢什么?其中一些是错误的,还是在某些情况下是正确的而在其他情况下是错误的(反之亦然)?
简而言之:space 在这里有什么特殊含义吗(在这个特定主题中(我不问一般在代码中使用 space)?
如果是,什么时候,为什么?如果不是,什么是最佳实践?
除了在字符和字符串文字中,白色space在C++代码中唯一重要的地方是分隔,否则将(或可能)合并。
在您的情况下,三个标记 operator
、+
和 (
之间有明显的区别,因此添加的 space 字符没有任何区别编译器将如何解释声明。
但是,Toperator+(T t1, T t2)
之类的内容无效,因为 T
和 operator
现在将被视为 单个 (标识符) 令牌。
至于哪一个是“最好的”——这确实是一个品味和意见的问题,尽管 cppreference 通常使用“不 space” 选项来进行重载声明。
我想了解规则(如果有的话)关于使用spaces的正确书写运算符重载.
我见过不同的形式:
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
关键字、运算符字符和第一个括号之间的 space(s)。
哪一个是正确的?比其他人更喜欢什么?其中一些是错误的,还是在某些情况下是正确的而在其他情况下是错误的(反之亦然)?
简而言之:space 在这里有什么特殊含义吗(在这个特定主题中(我不问一般在代码中使用 space)?
如果是,什么时候,为什么?如果不是,什么是最佳实践?
除了在字符和字符串文字中,白色space在C++代码中唯一重要的地方是分隔
在您的情况下,三个标记 operator
、+
和 (
之间有明显的区别,因此添加的 space 字符没有任何区别编译器将如何解释声明。
但是,Toperator+(T t1, T t2)
之类的内容无效,因为 T
和 operator
现在将被视为 单个 (标识符) 令牌。
至于哪一个是“最好的”——这确实是一个品味和意见的问题,尽管 cppreference 通常使用“不 space” 选项来进行重载声明。