程序设计实习MOOC/自增和自减运算符的重载
生活随笔
收集整理的這篇文章主要介紹了
程序设计实习MOOC/自增和自减运算符的重载
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
自增和自減運(yùn)算符的重載
問題
編寫CDemo類,使得下面程序可以正常運(yùn)行
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; }輸出結(jié)果
5,6,7,7 7,6,5,5分析
自增++自減--運(yùn)算符有前置和后置之分,為了區(qū)分,后置運(yùn)算符多一個(gè)參數(shù)int。
前置運(yùn)算符:作為一元運(yùn)算符重載,可以重載為成員函數(shù)也可以重載為全局函數(shù)(返回值到底是不是引用?)。
后置運(yùn)算符:作為二元運(yùn)算符重載,多寫一個(gè)參數(shù)int,但是沒有實(shí)際意義。可以重載為成員函數(shù)也可以重載為全局函數(shù)。返回值不是引用!不是引用!不是引用!
為了cout可以正常輸出,重載類型強(qiáng)制轉(zhuǎn)換運(yùn)算符int作為成員函數(shù)。
類型強(qiáng)制轉(zhuǎn)換運(yùn)算符重載
不能寫返回值類型 實(shí)際上其返回值類型為類型強(qiáng)制轉(zhuǎn)換運(yùn)算符代表的類型運(yùn)算符重載的注意事項(xiàng)
完整代碼
#include<iostream> using namespace std; class CDemo{ public:CDemo(int num = 0):n(num){}CDemo operator++(); //前置++,成員函數(shù)CDemo operator++(int); //后置++,成員函數(shù)friend CDemo operator--(CDemo&); //前置--,友元函數(shù)friend CDemo operator--(CDemo&, int); //后置--,友元函數(shù)operator int(){ //強(qiáng)制類型轉(zhuǎn)換運(yùn)算符重載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; }總結(jié)
以上是生活随笔為你收集整理的程序设计实习MOOC/自增和自减运算符的重载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米9呼吸灯在哪(小米官方售后服务)
- 下一篇: nginx日志中文变成类型\xE9\xA