思维导图
封装类 用其成员函数实现(对该类的)数学运算符的重载(加法),并封装一个全局函数实现(对该类的)数学运算符的重载(减法)。
#include <iostream>using namespace std;
//封装 货物Goods 类
class Goods
{//把全局函数设置为类的友元 方便访问私有成员进行运算friend const Goods operator-(const Goods &L,const Goods &R);
private:double price;//价格int num;//数量
public:Goods() {}//无参构造函数//有参构造函数Goods(double p,int m):price(p),num(m){}//运算符重定义成员函数 实现+加法;const Goods operator+(const Goods &R)const{//定义临时类变量 存储计算后的结果并返回Goods temp;temp.price = price + R.price;temp.num = num + R.num;return temp;}void show(){cout << "价格:" << price << " 数量:" << num << endl;}
};
//封装运算符重定义一般函数 实现-减法;
const Goods operator-(const Goods &L,const Goods &R)
{//临时的类变量 存储计算结果并返回Goods temp;temp.price = L.price - R.price;temp.num = L.num - R.num;return temp;
}
int main()
{Goods g1(99.99,100);Goods g2(88.88,50);//等号右侧为(+加法)成员函数返回的临时值 Goods temp//Goods g3 = temp 调用拷贝构造函数完成初始化;Goods g3 = g1 + g2;//等号右侧为(-减法)全局函数返回的临时值 Goods temp//Goods g4 = temp 调用拷贝构造函数完成初始化;Goods g4 = g1 - g2;g3.show();g4.show();return 0;
}