运算符 重载 入门

 1 #include<iostream>
 2 using namespace std;
 3 class complex          //   定义  complex 类
 4 {
 5 public:
 6     complex(){real=0;imag=0;}      //   定义 构造函数  //  默认 函数的  值  为 0
 7     complex(double r,double i){real=r;imag=i;}      //   构造函数重载     //   在 类内 定义 带参的构造函数重载
 8     complex complex_add(complex &c2);                                   //声明 复数相加函数
 9     void display();                              //  声明输出函数
10 private:
11     double real;
12     double imag;
13 };
14 complex complex::complex_add(complex &c2)             //   定义复数 相加 函数   //  返回类型为 complex   在类外定义 类complex 的 成员函数 complex_add 函数 .
15 {
16     complex c;                
17     c.real=real+c2.real;
18     c.imag=imag+c2.imag;
19     return c;
20 }
21 void complex::display()
22 {
23     cout<<"("<<real<<","<<imag<<"i)"<<endl;
24 }
25 int main()
26 {
27     complex c1(3,4),c2(5,-10),c3;    //   定义 三个 复数对象
28     c3=c1.complex_add(c2);
29     cout<<"c1=";
30     c1.display();
31     cout<<"c2=";
32     c2.display();
33     cout<<"c1+c2=";
34     c3.display();
35     return 0;
36 }
37 //     c1.complex--------在  声明 c1 这个 对象的 时候 已经 走了一遍的  complex类  这时候  real 和 imag  的 值就被保存在了 那一个 栈帧里面 
38 //  当 调用 c1.complex_add的时候   这个就是  real  和  imag

 重载(overloading):所谓重载,就是赋予新的含义.函数重载就是赋予新的含义,使之实现新的功能. 上面的 是 通过函数来实现 复数相加 下面将 上面的程序 稍作改动 实现 运算符重载. 给'+'赋予计算复数的功能

 1 #include<iostream>
 2 using namespace std;
 3 class complex          //   定义  complex 类
 4 {
 5 public:
 6     complex(){real=0;imag=0;}      //   定义 构造函数  //  默认 函数的  值  为 0
 7     complex(double r,double i){real=r;imag=i;}      //   构造函数重载     //   在 类内 定义 带参的构造函数重载
 8     complex operator +(complex &c2);                                   //声明 复数相加函数
 9     void display();                              //  声明输出函数
10 private:
11     double real;
12     double imag;
13 };
14 complex complex::operator +(complex &c2)             //   定义复数 相加 函数   //  返回类型为 complex   在类外定义 类complex 的 成员函数 complex_add 函数 .
15 {
16     complex c;
17     c.real=real+c2.real;
18     c.imag=imag+c2.imag;
19     return c;
20 }
21 void complex::display()
22 {
23     cout<<"("<<real<<","<<imag<<"i)"<<endl;
24 }
25 int main()
26 {
27     complex c1(3,4),c2(5,-10),c3;    //   定义 三个 复数对象
28     c3=c1+c2;
29     cout<<"c1=";
30     c1.display();
31     cout<<"c2=";
32     c2.display();
33     cout<<"c1+c2=";
34     c3.display();
35     return 0;
36 }
原文地址:https://www.cnblogs.com/A-FM/p/5236319.html