亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++中為什么重載前置++運算符要加個&?

C++中為什么重載前置++運算符要加個&?

C++
交互式愛情 2019-04-08 08:04:27
#include<iostream>using namespace std;class Complex{protected:double real; //復數的實部double image; //復數的虛部public: Complex(double r = 0.0, double i = 0.0){real = r; image = i;}void output();Complex& operator ++(); //前置增1運算符函數Complex operator ++(int); //后置增1運算符函數 };void Complex::output(){if (image < 0.0) cout<<"("<<real<<image<<"i)";elsecout<<"("<<real<<"+"<<image<<"i)";}Complex& Complex::operator++(){++real;return *this; }Complex Complex::operator++(int){return Complex(real++, image);}int main(){Complex a(2.0, 3.0), b(3.0, 2.0);cout<<"++a: ";(++a).output();cout<<"; after ++a, a is: ";a.output();cout<<endl;cout<<"b++: ";(b++).output();cout<<"; after b++, b is: ";b.output();cout<<endl;return 0;}
查看完整描述

4 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊


1

2

3

4

5

6

7

8

9

10

Complex& Complex::operator++() // 返回一個引用即代表當前對象本身

{

        ++real;

        return *this;  // 返回當前對象(立即可體現出來前置++的值)

}

 

Complex Complex::operator++(int)

{

        return Complex(real++, image); // 這里只是返回一個對象的副本。不能體現real++后的值(因為是后置++),所以后置++只能先取值。然后再++

}


 


查看完整回答
反對 回復 2019-04-09
?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

這里返回對象的引用, 可以連續使用。
舉個例子 cout<<是我們經常用的吧
其實是重載了<<這個操作符。
如果不返回引用
cout<<a<<b<<endl; 就不可以一起寫了。
如果返回自身的引用 cout<<a之后,返回身身的引用,后面可以繼續接b了。
就是這個意思吧。好多重載操作符,作用其實都是這樣的。
還有 "="的重載
返回引用的目的 顯然就是 方便寫成 a = b = c;
為什么可以這樣 其實是a = (b = c);
b=c返回的是b的引用,然后再繼續 a = b ;如果不反回自身的引用,顯然就不行了!

 


查看完整回答
反對 回復 2019-04-09
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

1、因為重載自加運算符后可以返回對象的引用, 以方便在表達式中連續使用。
舉個例:
cout<<是經常用的,其實是重載了<<這個操作符。如果不返回引用,cout<<a<<b<<endl; 就不可以一起寫了。如果返回自身的引用 cout<<a之后,返回身身的引用,后面可以繼續接b了。就是這個意思吧。好多重載操作符,作用其實都是這樣的。

2、引用是C++引入的新語言特性,是C++常用的一個重要內容之一,正確、靈活地使用引用,可以使程序簡潔、高效。引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣。 引用的聲明方法:類型標識符 &引用名=目標變量名。


查看完整回答
反對 回復 2019-04-09
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

& 代表引用,形參是引用(非const型)時,就是將該對象自己傳遞進函數了返回值是&時用在運算符的返回值是左值時,常用有這幾個:所有的賦值(包括復合賦值),前綴自加自減,下標運算符

查看完整回答
反對 回復 2019-04-09
  • 4 回答
  • 0 關注
  • 1647 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號