日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++中运算符重载方式中你易遗漏的小细节

發布時間:2025/3/19 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++中运算符重载方式中你易遗漏的小细节 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


運算符重載函數相當于類來說有兩種存在方式:
1.重載為類的成員函數。
2.重載為類的友元函數。

重載為類的成員函數。

如果把運算符重載為類的成員函數,則該函數么須通過對象調用,該對象就是運算符的其中一個操作數,在運算符重載函數中通過this指針隱含(或顯式)地訪問對象的成員。 如果把雙目運算符重載為類的成員函數,則該運算符有兩個操作數,左操作數是調用運復符重載函數的對象,而右操作數作為運算符重載函數的實參傳遞到運算符重載函數中雙目運算符重載為類的成員函數時,其調用的一般格式如下: **左操作數 運算符 右操作數;** 編譯器把它解釋為 **左操作數.operator 運算符(右操作數);** 即左操作數是調用運算符重載函數的對象,右操作數作為函數的參數。

例如,表達式“sl>=s2”相當于“s1. operator>=(s2)”

如果把單目運算符重載為類的成員函數,則該運算符只有一個操作數,即調用運算符重載函數的對象本身。單目運算符重載為類的成員函數時,要區分前置運算符與后置運算符如果是前置運算符,則運算符重載函數沒有參數。其調用格式如下:**運算符 操作數;**編輯器把它解釋為**操作數.operator 運算符();**


注意:
如果是后置運算符,運算符重載函數需要一個整型參數,*但該參數不起任何作用,僅用來標識該運算符是后置運算符。*其調用格式如下:
操作數 運算符;
編譯器把它解釋為
操作數 operator 運算符 (int)
下面通過一個示例,演示重載自增運算符的方法,實現自定義Time類對象 t的自增運算運算規則則是把當前對象t的秒數加一。

#include<iostream> using namespace std; class Time { public:Time(int h = 0, int m = 0, int s = 0){hour = h;minute = m;second = s;}Time operator++ ();Time operator++ (int);void show();private:int hour;int minute;int second;};Time Time::operator++()//實現前置自增 {second++;if (second == 60){minute++;second = 0;}if (minute == 60){hour++;minute = 0;}hour %= 24;return *this;Time Time::operator++(int)//實現后置自增{Time t = *this;++(*this);return t;}void Time::show(){cout << hour << ":" << minute << ":" << second << endl;}int main(){Time t;t.show();Time t1;t1 = t++;t1.show();t.show();t1 = ++t;t1.show();t.show();return 0;} }

本例實現前置自增及后置自增運算,前置自增函數不帶參數,后置自增函數帶一個int類型的參數,這里的int僅用于區別前置自增,在函數調用時不帶參數。本程序值得讀者借鑒的地方是在實現后置自增時直接調用了已經實現的前置
自增運算符。從結果來看,后置自增運算表式保留了對象自增之前的值,并且對象實現了自增;前置自增運算實現了對象的自增,并且表達式的值是對象自增之后的值。這與算術運算中自增運算符的功能是吻合的。

重載為類的友元函數。

運算符重載函數可以實現為類的成員函數,也可以實現為類的友元函數。運算符的左操作數如果不是當前類的對象,那么該運算符就不能聲明為類的成員函數只能聲明為類的友元函數。在類中對運算符重載函數進行友元函數的聲明格式如下:
friend 類型說明符 operator 運算符 (參數列表);
類的友元函數不能通過對象進行調用,所以運算符的操作數全部作為運算符重載函數
的實參傳遞到運算符重載函數中。雙目運算符重載函數重載為類的友元函數時的調用格式
如下:
做操作數 運算符 右操作數;
編譯器把它解釋為
operator 運算符 (左操作數,右操作數);

總結

以上是生活随笔為你收集整理的c++中运算符重载方式中你易遗漏的小细节的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。