国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++運算符重載

2019-11-08 19:52:36
字體:
來源:轉載
供稿:網友

1.一般運算符重載 class A { public: A(int d):data(d){} A Operator+(A&);//成員函數 A operator-(A&); A operator*(A&); A operator/(A&); A operator%(A&); friend A operator+(A&,A&);//友元函數 friend A operator-(A&,A&); friend A operator*(A&,A&); friend A operator/(A&,A&); friend A operator%(A&,A&); PRivate: int data; }; //成員函數的形式 A A::operator+(A &a) { return A(data+a.data); } A A::operator-(A &a) { return A(data-a.data); } A A::operator*(A &a) { return A(data*a.data); } A A::operator/(A &a) { return A(data/a.data); } A A::operator%(A &a) { return A(data%a.data); } //友元函數的形式 A operator+(A &a1,A &a2) { return A(a1.data+a2.data); } A operator-(A &a1,A &a2) { return A(a1.data-a2.data); } A operator*(A &a1,A &a2) { return A(a1.data*a2.data); } A operator/(A &a1,A &a2) { return A(a1.data/a2.data); } A operator%(A &a1,A &a2) { return A(a1.data%a2.data); } //然后我們就可以對類的對象進行+、-、*、/了。 void main(void) { A a1(1),a2(2),a3(3); a1=a2+a3; //或者 a1=a2.operator+(a3); }

2.關系運算符重載 bool operator == (const A& ); bool operator != (const A& ); bool operator < (const A& ); bool operator <= (const A& ); bool operator > (const A& );

3.邏輯運算符重載 bool operator || (const A& ); bool operator && (const A& ); bool operator ! ();

4.單目運算符重載 A& operator + (); A& operator - (); A* operator & (); A& operator * ();

5.自增減運算符重載 A& operator ++ ();//前置++ A operator ++ (int);//后置++ A& operator –();//前置– A operator – (int);//后置–

6.賦值運算符重載 A& operator += (const A& ); A& operator -= (const A& ); A& operator *= (const A& ); A& operator /= (const A& ); A& operator %= (const A& ); A& operator &= (const A& ); A& operator |= (const A& ); A& operator ^= (const A& ); A& operator <<= (int i); A& operator >>= (int i);

7.特殊運算符重載 A& operator = (const A& ); char operator [] (int i);//返回值不能作為左值 const char* operator () (); T operator -> (); //類型轉換符 operator char* () const; operator int (); operator const char () const; operator short int () const; operator long long () const;

兩種重載方式的比較: 一般情況下,單目運算符最好重載為類的成員函數;雙目運算符則最好重載為類的友元函數。 以下一些雙目運算符不能重載為類的友元函數:=、()、[]、->。 類型轉換函數只能定義為一個類的成員函數而不能定義為類的友元函數。 C++提供4個類型轉換函數:reinterpret_cast(在編譯期間實現轉換)、const_cast(在編譯期間實現轉換)、stactic_cast(在編譯期間實現轉換)、dynamic_cast(在運行期間實現轉換,并可以返回轉換成功與否的標志)。 若一個運算符的操作需要修改對象的狀態,選擇重載為成員函數較好。 若運算符所需的操作數(尤其是第一個操作數)希望有隱式類型轉換,則只能選用友元函數。 當運算符函數是一個成員函數時,最左邊的操作數(或者只有最左邊的操作數)必須是運算符類的一個類對象(或者是對該類對象的引用)。如果左邊的操作數必須是一個不同類的對象,或者是一個內部 類型的對象,該運算符函數必須作為一個友元函數來實現。 當需要重載運算符具有可交換性時,選擇重載為友元函數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 龙川县| 万宁市| 武平县| 西充县| 固安县| 乐昌市| 天长市| 闸北区| 桂东县| 巴楚县| 长乐市| 比如县| 锦州市| 增城市| 措勤县| 宜兰县| 改则县| 汉中市| 康平县| 安陆市| 长丰县| 东台市| 阳新县| 迁西县| 自治县| 偃师市| 株洲县| 汾西县| 大埔区| 大洼县| 全椒县| 漠河县| 尉犁县| 界首市| 林芝县| 郁南县| 拜泉县| 吴桥县| 射洪县| 云南省| 鄯善县|