++ 運算符,還可分為前綴 ++ 和后綴 ++ 運算符。 重載前綴++運算符 C++ 允許重載前綴運算符,以使表達式 ++b 能遞增 b 的長度值,並返回結果對象。該運算符可以作為成員函數來重載,這使得它的單個形參是隱含的, 所以重載運算符不需要形參。
以下是Length類的一部分,它顯示了 ++ 運算符的聲明:
class Length { private: int len_inches; public: //前綴++的聲明 Length operator++ (); //類的其余部分,省略 };
以下是運算符的實現語句,它將 len_inches 增加 1 並返回修改的對象:
Length Length::operator++() { len_inches ++; return *this; }
給定該重載之后,就可以使用很容易理解的 ++b 表達式了,它與 b.operator++() 是完全等效的。在程序中可以使用這兩種表示法中的任何一種。 重載后綴++運算符 后綴遞增運算符 b++ 也可以遞增b的長度,但與前綴版本不同,因為它返回對象在增加之前的值。重載后綴遞增運算符與重載前綴版本稍有不同。
以下是為 Length 類重載后綴遞增運算符的函數:
Length Length::operator++(int) { Length temp = *this; len_inches ++; return temp; }
可以發現,第一個區別是該函數有一個 int 類型的虛擬形參,這個形參在函數的主體中是不會被使用的,這只是一個約定,它告訴編譯器遞增運算符正在后綴模式下被重載。第二個區別是使用臨時局部變量 temp 來獲取遞增之前對象的值。該值將被保存並在稍后由函數返回。
