C++运算符重载为非成员函数

 1 #include<iostream>
 2 using namespace std;
 3 class Complex{
 4 public:
 5     Complex(double r=0.0,double i=0.0):real(r),imag(i){}
 6     friend Complex operator + (const Complex &c1,const Complex &c2);
 7     friend Complex operator - (const Complex&c1,const Complex &c2);
 8     friend ostream & operator <<(ostream & out,const Complex & c);
 9 private:
10     double real,imag;
11 };
12 Complex operator + (const Complex &c1,const Complex &c2)
13 {
14     return Complex(c1.real+c2.real,c1.imag+c2.imag);
15 }
16 Complex operator - (const Complex &c1,const Complex &c2)
17 {
18     return Complex(c1.real-c2.real,c1.imag-c2.imag);
19 }
20 ostream & operator <<(ostream & out,const Complex & c)
21 {
22     out<<"("<<c.real<<","<<c.imag<<")";
23     return out;
24 }
25 int main()
26 {
27     Complex c1(5,4),c2(2,10),c3;
28     cout<<"c1="<<c1<<endl;
29     cout<<"c2="<<c2<<endl;
30     c3=c1-c2;
31     cout<<"c3=c1-c2="<<c3<<endl;
32     c3=c1+c2;
33     cout<<"c3=c1+c2="<<c3<<endl;
34     return  0;
35 }
View Code
原文地址:https://www.cnblogs.com/wangkaipeng/p/4585298.html