49、C++/友元、常成员函数和常对象、运算符重载学习20240314

一、封装类 用其成员函数实现(对该类的)数学运算符的重载(加法),并封装一个全局函数实现(对该类的)数学运算符的重载(减法)。

代码:

#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;
}

运行:

思维导图

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 21:14:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 21:14:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 21:14:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 21:14:02       18 阅读

热门阅读

  1. springboot单体项目链路日志跟踪及接口耗时

    2024-03-14 21:14:02       18 阅读
  2. express-generator生成nodejs服务基本骨架

    2024-03-14 21:14:02       18 阅读
  3. Python 学习——Python requests 库文档

    2024-03-14 21:14:02       22 阅读
  4. Element ui上传excel到并修改字段名

    2024-03-14 21:14:02       18 阅读
  5. Python中的函数定义与使用

    2024-03-14 21:14:02       21 阅读
  6. 海豚调度系列之:集群部署(Cluster)

    2024-03-14 21:14:02       17 阅读
  7. L1-039 古风排版(C++)

    2024-03-14 21:14:02       21 阅读
  8. C#在字段中存储数据

    2024-03-14 21:14:02       20 阅读
  9. 如何使用vue定义组件之——全局or局部

    2024-03-14 21:14:02       23 阅读
  10. Spring核心接口:ObjectProvider接口

    2024-03-14 21:14:02       20 阅读
  11. MyBatis-Plus知识点(一)

    2024-03-14 21:14:02       21 阅读