操作符重载,通过重载,对自定义的数据类型进行操作
//…这里是操作符重载,写在全局
//...这里是操作符重载,写在全局
Complex operator+(Complex &c1, Complex &c2)
{
Complex temp(c1.a + c2.a, c1.b + c2.b);
return temp;
}
单目运算符不能写全
#include<iostream>
#include<cmath>
using namespace std;
class Complex
{
public:
Complex(int a, int b)
{
this->a = a;
this->b = b;
}
void printComplex()
{
cout << "(" << this->a << "," << this->b<<"i)" << endl;
}
friend Complex ComplexAdd(Complex &c1, Complex & c2);
//Complex ComplexAdd1(Complex &another)
//{
// Complex temp(this->a + another.a,this->b + another.b);
// return temp;
//}
friend Complex operator+(Complex &c1, Complex &c2);
private:
int a;//实数
int b;//虚数
};
Complex ComplexAdd(Complex &c1, Complex & c2)
{
Complex temp(c1.a + c2.a,c1.b+c2.b );
return temp;
}
//...这里是操作符重载,写在全局
Complex operator+(Complex &c1, Complex &c2)
{
Complex temp(c1.a + c2.a, c1.b + c2.b);
return temp;
}
int main()
{
Complex c1(1, 2);
Complex c2(2, 4);
c1.printComplex();
c2.printComplex();
//Complex c3 = ComplexAdd(c1,c2);
//c3.printComplex();
//cout << "----------------------"<<endl;
//c3 = c1.ComplexAdd1(c2);
//c3.printComplex();
//cout << "----------------------" << endl;
//...这里是操作符重载
Complex c3 = c1 + c2;
c3.printComplex();
system("pause");
return 0;
}
左移右移重载