標籤:
所謂運算子多載,可以簡單理解為函數的重載,而[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++之運算子多載