c++之運算子多載

來源:互聯網
上載者:User

標籤:

所謂運算子多載,可以簡單理解為函數的重載,而[email protected]就是函數名,@表示任何運算子,加減乘除等。

 

#include <iostream>using namespace std;class Complex{public:    Complex(){real = 0; imag = 0;};    Complex(double r, double i){real = r; imag = i;};    Complex operator+ (Complex & c2);    void display();private:    double real;    double imag;};Complex Complex::operator+(Complex & c2){    Complex c;    c.real = real+c2.real;    c.imag = imag+c2.imag;    return c;};void Complex::display(){    cout<<real<<"--"<<imag<<endl;}int main(int argc, const char * argv[]) {    Complex c1(3,4), c2(5,-10), c3;    c3 = c1+c2;    cout<<"c1=";c1.display();    cout<<"c2=";c2.display();    cout<<"c3=";c3.display();        return 0;}//輸出8,-6

如上代碼,main函數中第二行c3 = c1+ c2表示的是調用c1的重載函數operator+,以c2作為實參來執行。

所以重載函數中

c.real = real+c2.real;

表示的是c.real = c1.real + c2.real。

以上重載函數還可以簡略如下:

Complex Complex::operator + (Complex &c2)    {return Complex(real+c2.real, imag+c2.imag);}

其中

return Complex(real+c2.real, imag+c2.imag);

返回的是一個無名對象。

 

c++之運算子多載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.