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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序设计实习MOOC/自增和自减运算符的重载

發布時間:2023/12/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序设计实习MOOC/自增和自减运算符的重载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自增和自減運算符的重載

問題

編寫CDemo類,使得下面程序可以正常運行

int main(){CDemo d(5);cout << (d++) << ",";cout << d << ",";cout << (++d) << ",";cout << d << endl;cout << (d--) << ",";cout << d << ",";cout << (--d) << ",";cout << d << endl;return 0; }

輸出結果

5,6,7,7 7,6,5,5

分析

自增++自減--運算符有前置和后置之分,為了區分,后置運算符多一個參數int。
前置運算符:作為一元運算符重載,可以重載為成員函數也可以重載為全局函數(返回值到底是不是引用?)。
后置運算符:作為二元運算符重載,多寫一個參數int,但是沒有實際意義。可以重載為成員函數也可以重載為全局函數。返回值不是引用!不是引用!不是引用!

強調:后置運算符多一個參數int,返回值不是引用。

為了cout可以正常輸出,重載類型強制轉換運算符int作為成員函數。

類型強制轉換運算符重載

不能寫返回值類型 實際上其返回值類型為類型強制轉換運算符代表的類型

運算符重載的注意事項

  • C++不允許定義新的運算符
  • 重載后運算符的含義應該符合日常習慣
  • 運算符重載不改變運算符的優先級
  • 以下運算符不能夠被重載:. .* :: ?: sizeof
  • 以下運算符重載是必須聲明為類的成員函數:() [] ->
  • 流提取>>和流插入<<運算符只能重載為全局函數,第一個參數ostream對象必須為引用。
  • 完整代碼

    #include<iostream> using namespace std; class CDemo{ public:CDemo(int num = 0):n(num){}CDemo operator++(); //前置++,成員函數CDemo operator++(int); //后置++,成員函數friend CDemo operator--(CDemo&); //前置--,友元函數friend CDemo operator--(CDemo&, int); //后置--,友元函數operator int(){ //強制類型轉換運算符重載return n;} // friend ostream& operator<<(ostream& co, const CDemo& d); // friend istream& operator>>(istream& ci, CDemo& d); private:int n; }; //前置++ CDemo CDemo::operator++(){n++;return *this; } //后置++ CDemo CDemo::operator++(int){CDemo temp(*this);n++;return temp; } //前置-- CDemo operator--(CDemo& d){d.n--;return d; } //后置-- CDemo operator--(CDemo& d, int){CDemo temp(d);d.n--;return temp; } //ostream& operator<<(ostream& co, const CDemo& d){ // co << d.n; // return co; //} //istream& operator>>(istream& ci, CDemo& d){ // ci >> d.n; // return ci; //} int main(){CDemo d(5);cout << (d++) << ",";cout << d << ",";cout << (++d) << ",";cout << d << endl;cout << (d--) << ",";cout << d << ",";cout << (--d) << ",";cout << d << endl;return 0; }

    總結

    以上是生活随笔為你收集整理的程序设计实习MOOC/自增和自减运算符的重载的全部內容,希望文章能夠幫你解決所遇到的問題。

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