对于某些运算符号(+,-,*,/....),我们不满足与它原有的操作方式,而是要在对 特有对象 (如负数的加减)进行使用,但是编译器会不允许这样做,因为会与操作符 原本的类型不匹配 而导致操作失败。因此我们需要对运算符进行重载,即赋予它新的意义,从而满足我们的使用需求。 如complex_a和complex_b是两个复数对象求两个复数的和, 希望能直接写:complexa + comple_b 运算符重载的目的是:扩展C++中提供的运算符的适用范围,使之能作用于对象 。 同一个运算符, 对不同类型的操作数,所发生的行为不同。 对于复数对象:complex_a + complex_b => 生成新的复数对象 对于整数:5 + 4 = 9 运算符重载的 实质是函数重载 , 它可以重载为普通函数,也可以重载为成员 ,在对含有该运算法的表达式转换时,调用对应的运算符函数完成重载的操作。( 依据参数的类型进行匹配 ) 1 class Complex 2 { 3 public:double real,imag; 4 Complex( double r = 0.0, double i= 0.0 ):real(r),imag(i) {} 5 Complex operator-(const Complex & c); 6 }; 7 Complex operator + ( const