ste*_*ane 1 c++ correctness spaces rules operator-overloading
我想学习有关使用空格来编写正确的运算符重载的规则(如果有)。
我见过不同的形式:
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. */
Run Code Online (Sandbox Code Playgroud)
我说的是关键字、运算符字符和第一个括号之间的空格operator。
哪一个是正确的?与其他相比,什么是首选?其中有些是错误的,还是有些在某些情况下是正确的,而在其他情况下是错误的(反之亦然)?
简而言之:空格在这里有什么特殊含义吗(在这个特定主题中(我不询问代码中一般使用空格的情况)?
如果是这样,何时以及为什么?如果不是,什么被认为是最佳实践?
除了字符和字符串文字之外,C++ 代码中空格唯一重要的地方是分隔将(或可能)以其他方式合并的标记。
\noperator在您的情况下,三个标记、+和之间有明显的分离(,因此添加的空格字符对于编译器如何解释声明没有任何影响。
但是,类似的东西Toperator+(T t1, T t2)是无效的,因为 theT和 theoperator现在将被视为单个(标识符)标记。
至于哪一个是“最好的”\xe2\x80\x93,这实际上是一个品味和意见的问题,尽管cppreference通常使用“无空格”选项来进行重载声明。
\n| 归档时间: |
|
| 查看次数: |
336 次 |
| 最近记录: |