#include <iostream>
using namespace std;
class Complex
{
private:
int a;
int b;
public:
Complex(){}
~Complex(){}
Complex(int a, int b);
friend Complex operator+(const Complex &c1, const Complex &c2);
friend ostream & operator<<(ostream &out, const Complex &c);
};
Complex::Complex(int a, int b)
{
this->a = a;
this->b = b;
}
Complex operator+(const Complex &c1, const Complex &c2)
{
Complex ret;
ret.a = c1.a + c2.a;
ret.b = c1.b + c2.b;
return ret;
}
ostream & operator<<(ostream &out, const Complex &c)
{
out<<c.a<<" + "<<c.b<<"i";
return out;
}
int main(int argc, char *argv[])
{
Complex c1(1, 2);
Complex c2(3 ,4);
Complex c3 = c1 + c2;
cout<<c1<<endl;
cout<<c2<<endl;
cout<<c3<<endl;
cin.get();
return 0;
}
二、操作符重载成员函数实现
#include <iostream>
using namespace std;
class Complex
{
private:
int a;
int b;
public:
Complex(){}
~Complex(){}
Complex(int a, int b);
Complex operator+(const Complex &c2);
friend ostream & operator<<(ostream &out, const Complex &c);
};
Complex::Complex(int a, int b)
{
this->a = a;
this->b = b;
}
Complex Complex::operator+(const Complex &c2)
{
Complex ret;
ret.a = this->a + c2.a;
ret.b = this->b + c2.b;
return ret;
}
ostream & operator<<(ostream &out, const Complex &c)
{
out<<c.a<<" + "<<c.b<<"i";
return out;
}
int main(int argc, char *argv[])
{
Complex c1(1, 2);
Complex c2(3 ,4);
Complex c3 = c1 + c2;
cout<<c1<<endl;
cout<<c2<<endl;
cout<<c3<<endl;
cin.get();
return 0;
}
note:
1、左操作的类对象不能被更改时候,用全局函数来重载操作符
2、=、->、[]、()只能用成员函数来重载操作符