C++ primer例子1实现

问题

在这里插入图片描述

代码

Sales_item.h

#include<iostream>
#include<string>
class Sales_item
{
    public:
        Sales_item(){};
        Sales_item(std::string insid, int num, double price);
        friend std::istream& operator>>(std::istream& is, Sales_item& item);
        friend std::ostream& operator<<(std::ostream& os, const Sales_item& item);
        friend Sales_item operator+(const Sales_item& item1,const Sales_item& item2);
    private:
        std::string insid_;
        int num_;
        double price_;
};

Sales_item.cpp

#include"Sales_item.h"

Sales_item::Sales_item(std::string insid, int num, double price)
:insid_(insid)
,num_(num)
,price_(price)
{
}

std::istream& operator>>(std::istream& is, Sales_item& item)
{
    is>>item.insid_>>item.num_>>item.price_;
    return is;
}

std::ostream& operator<<(std::ostream& os,const Sales_item& item)
{
    os<< item.insid_<<" "<<item.num_<<" "<<item.num_*item.price_<<" "<<item.price_;
    return os;
}

Sales_item operator+(const Sales_item& item1,const Sales_item& item2)
{
    if(item1.insid_==item2.insid_)
    {
        return Sales_item(item1.insid_, item1.num_+item2.num_, (item1.num_*item1.price_+item2.num_*item2.price_)/(item1.num_+item2.num_));
    }
    else
    {
        return item1;
    }
}

prog1.cc

#include<iostream>
#include "Sales_item.h"
int main()
{
    Sales_item item1,item2;
    std::cin>>item1>>item2;
    std::cout<<"相加结果:"<<std::endl;
    std::cout<<item1+item2<<std::endl;
    return 0;
}

运行

g++ prog1.cc Sales_item.cpp -o prog
[root@localhost myPractice]# ./prog 
0-201-78345-X 3 20.00
0-201-78345-X 2 25.00
相加结果:
0-201-78345-X 5 110 22

知识点

友元函数可以访问其所属类的私有成员,但不是类的成员函数。友元函数没有隐含的this指针,因此不能直接访问类的非静态成员变量.

思考:
1.不使用友元函数怎么实现?
2.哪些运算符不能重载?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/681541.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode-43. 字符串相乘【数学 字符串 模拟】

LeetCode-43. 字符串相乘【数学 字符串 模拟】 题目描述&#xff1a;解题思路一&#xff1a;模拟乘法&#xff0c;两个数中每一位数相乘的时候乘上他们各自的进制数&#xff0c;之后求和。循环时&#xff0c;分别记录各自的进制数背诵版&#xff1a;解题思路三&#xff1a;0 题…

课程标准包括哪些内容

在教育的广阔天地中&#xff0c;课程标准如同一座灯塔&#xff0c;照亮了教师们的教学之路。那么&#xff0c;这座灯塔究竟照亮了哪些关键领域呢&#xff1f; 课程标准为我们指明了教学目标。这些目标是教学活动的航标&#xff0c;指引我们如何根据学生的认知水平和学习需求&a…

防火墙是什么?探讨部署Web防火墙的必要性

如今&#xff0c;多云环境、API安全功能扩展、合作伙伴集成即时可用、可用性和可视化增强以及提高自动化程度已经成为基本要求。伴随企业应用架构的迁移&#xff0c;在用户端&#xff0c;需要在部署环境不断扩展但人员技能有限的情况下&#xff0c;保护数量日益增长的应用安全。…

如何在springboot项目中使用Mybatisplus

文章目录 1.mybatisplus的作用2.mybatisplus使用流程2.1pom.xml文件中增加依赖&#xff08;点击右上角蓝色按钮下载依赖&#xff09;2.2navicat新建数据库&#xff0c;增加application.properties数据库配置2.3 启动类添加注解&#xff0c;增加mapper包操作数据库2.5添加实体类…

如何通过PHP语言实现远程控制多路照明

如何通过PHP语言实现远程控制多路照明呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现控制多路照明&#xff0c;通过多路控制器&#xff0c;可独立远程控制多路照明。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称厂…

springboot 图形验证码 前后端分离解决方案 easy-captcha

easy-captcha介绍 easy-captcha&#xff0c;提供了Java图形验证码&#xff0c;支持gif、中文、算术等类型&#xff0c;可用于Java Web、JavaSE等项目&#xff0c;是个很好用的工具库&#xff0c;文档比较完备。 用法 添加maven依赖 <!--图形验证码--><dependency&g…

像图一样交流:为大语言模型编码图

译者 | 高永祺 单位 | 东北大学自然语言处理实验室 原文链接&#xff1a;https://blog.research.google/2024/03/talk-like-graph-encoding-graphs-for.html 1.作者介绍 Bahare Fatemi&#xff0c;谷歌蒙特利尔研究部门的研究科学家&#xff0c;专门从事图表示学习和自然语言…

YOLO-Worldv2两分钟快速部署

本次部署使用的框架基于ultralytics&#xff0c; 并且已经集成最新版本的YOLOv8框架&#xff1a; 一键环境配置 pip install ultralytics基础使用 训练 from ultralytics import YOLOWorld model YOLOWorld(yolov8x-worldv2.pt) results model.train(datacoco8.yaml, epo…

【全开源】知识库文档系统(ThinkPHP+FastAdmin)

&#x1f4da;知识库文档系统&#xff1a;解锁知识的无限可能 一款基于ThinkPHPFastAdmin开发的知识库文档系统&#xff0c;可用于企业工作流程的文档管理&#xff0c;结构化记录沉淀高价值信息&#xff0c;形成完整的知识体系&#xff0c;能够轻松提升知识的流转和传播效率&a…

高通开发系列 - 借助libhybris库实现Linux系统中使用Andorid库

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 概述Android代码下载和编译aarch64开发环境libhybris下载和编译libhybris测试验证调用库中的函数概述 我主要是基于…

第三方软件测试报告的作用是什么?可全国通用吗?

随着信息技术的发展&#xff0c;市面上的软件产品越来越多&#xff0c;因此软件质量的好坏是软件企业以及用户极为关注的话题。为了更好的保障软件产品质量&#xff0c;将测试工作交给第三方软件测试机构成为了软件企业的首选。第三方软件测试不同于软件开发公司内部测试团队所…

pycharm绘图时中英文不能同时出现 中文出现小框框的问题解决

# 设置字体为微软雅黑&#xff0c;正确显示负号 plt.rcParams[font.sans-serif] [Microsoft YaHei] plt.rcParams[axes.unicode_minus] False

解析数据洁净之道:BI 中如何清洗脏数据?

前言 随着数字化和信息化进程的不断发展&#xff0c;数据已经成为企业的一项不可或缺的重要资源。然而&#xff0c;这些数据往往是庞大的、复杂的&#xff0c;甚至掺杂着很多的无效的、错误的数据。那么如何在这些数据中过滤那些干扰项&#xff0c;保证数据发挥最大的作用呢&a…

html文件使用postcss-pxtorem适配移动端 使用tailwindcss库

项目截图 插件下载 npm i -D postcss8.4.38 postcss-cli10.1.0 postcss-pxtorem6.1.0 tailwindcss3.4.3postcss.config.js & tailwind.config.js postcss.config.js const pxToRem require(postcss-pxtorem) module.exports {plugins: [pxToRem({rootValue: 75,propLi…

利用GPT和PlantUML快速生成UML图用于设计

在软件开发中&#xff0c;设计阶段可是关键的一步。UML&#xff08;统一建模语言&#xff09;图能帮我们更清晰地理解和规划系统结构&#xff0c;但手动画UML图有时会很费时费力。好消息是&#xff0c;通过结合使用ChatGPT和PlantUML&#xff0c;我们可以高效地生成UML图&#…

python中文件操作详解(1)

在python中我们经常会对文件进行一些常见的操作&#xff0c;比如打开文件&#xff0c;操作文件&#xff0c;关闭文件&#xff0c;此篇文章主要是记录自己在学习过程中的一些总结供大家学习&#xff0c;也欢迎查漏补缺~ 1.文件的打开 方式一&#xff1a;此种方式打开的文件需要…

拉普拉斯算子

问Chat GPT两种不同拉普拉斯算子的区别&#xff1a;

【WEEK15】 【DAY1】异步任务【中文版】

2024.6.3 Monday 目录 17.异步、定时、邮件任务17.1.异步任务17.1.1.新建springboot-09-test项目17.1.2.创建一个service包17.1.2.1.创建一个类AsyncService 17.1.3.编写controller包17.1.3.1.编写AsyncController类 17.1.4.运行Springboot09TestApplication.java17.1.5.修改S…

下载ubuntu22.04

建议使用&#xff1a;清华源镜像 官网下载比较慢Ubuntu 22.04.4 LTS (Jammy Jellyfish) 打开清华源向下翻 然后找到22.04 下载完成&#xff1a;

牛客热题:矩阵最长递增路径

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;矩阵最长递增路径题目链接方法一…