知识点:
1.两个不同位置的const的不同意义
2.形参有默认值的函数只能在类内给出,类外不能多余声明,即使默认值一样
3.创建一个临时对象调用的是构造函数而非默认的复制构造函数
4.重载的运算符可以当成普通运算符使用,但是要注意其本质是函数调用,要注意本体对象和传入参数的位置
//例8-1_复数类加减法运算重载—成员函数形式
#include<iostream>
using namespace std;
//复数类定义
class Complex {
public:
Complex(double r = 0.0, double i = 0.0);
Complex operator+(const Complex& c2) const;
Complex operator-(const Complex& c2) const;
//函数的参数,是一个常量引用,表示该函数接受一个常量引用类型的 Complex 对象作为参数
//const在函数声明的末尾表示这个函数是一个常量成员函数,即在这个函数中,不会修改对象的成员变量
void display() const; //输出复数
private:
double real;
double imag;
};
//构造函数
Complex::Complex(double r /* = 0.0 */, double i /* = 0.0 */) :real(r), imag(i) {
cout << "调用Complex构造函数" << endl;
}
//注意重载函数定义时的格式
Complex Complex::operator+(const Complex& c2)const {
//创建一个无名临时对象作为返回值
return Complex(real + c2.rea