所谓运算符重载,可以简单理解为函数的重载,而[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);
返回的是一个无名对象。
时间: 2024-11-09 07:32:44