簡體   English   中英

C++ 運算符重載,表達式中的空格規則

[英]C++ operators overload, rules for spaces in expression

我想了解有關使用空格編寫正確的運算符重載規則(如果有的話)。

我見過不同的 forms:

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)這樣的東西是無效的,因為Toperator現在將被視為單個(標識符)標記。

至於哪一個是“最好的”——這真的是一個品味和意見的問題,盡管cppreference通常使用“無空間”選項來進行重載聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM