C++之++操作符重載


++ 運算符,還可分為前綴 ++ 和后綴 ++ 運算符。 重載前綴++運算符 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 來獲取遞增之前對象的值。該值將被保存並在稍后由函數返回。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM