《C++ Primer》7.1.4节练习

练习7.11:

#include <iostream>
#include <cstring>
using namespace std;class Sales_data {public:Sales_data() = default;Sales_data(const std::string &book): bookNo(book) {}Sales_data(const std::string &book, const unsigned num, const double sellp, const double salep);Sales_data(std::istream &is);public:std::string isbn()const {return bookNo;}public:std::string bookNo;//书籍编号unsigned units_sold = 0;//销售量double sellingprice = 0.0;//原始价格double saleprice = 0.0;//实际价格double discount = 0.0;//折扣
};std::istream &operator>>(std::istream &in, Sales_data &s) {in >> s.bookNo >> s.units_sold >> s.sellingprice >> s.saleprice;if (in && s.sellingprice != 0)s.discount = s.saleprice / s.sellingprice;elses = Sales_data();return in;
}std::ostream &operator<<(std::ostream &out, const Sales_data &s) {out << s.isbn() << " " << s.units_sold << " " << s.sellingprice << " " << s.saleprice << " " << s.discount;return out;
}Sales_data::Sales_data(const std::string &book, const unsigned num, const double sellp, const double salep) {bookNo = book;units_sold = num;sellingprice = sellp;saleprice = salep;if (sellingprice != 0)discount = saleprice / sellingprice;
}Sales_data::Sales_data(std::istream &is) {is >> *this;
}int main() {Sales_data data1;Sales_data data2("978-7-121-15535-2");Sales_data data3("978-7-121-15535-2", 100, 128, 109);Sales_data data4(cin);cout << "书籍的销售情况:" << endl;cout << data1 << endl;cout << data2 << endl;cout << data3 << endl;cout << data4 << endl;return 0;}

在类的定义中,我们设计了4个构造函数。
第一个构造函数是默认构造函数,它使用了C++11新标准提供的=default。它的参数列表为空,即不需要我们提供任何数据也能构造一个对象。
第二个构造函数只接受一个const string&,表示书籍的ISBN编号,编译器赋予其他数据成员类内初始值。
第三个构造函数接受完整的销售记录信息,const string&表示书籍的ISBN编号,const unsigned表示销售量,后面两个const double分别表示书籍的原价和实际售价。
最后一个构造函数接受istream&并从中读取书籍的销售信息。
我们在main函数中创建4个Sales_data对象并依次输出其内容,上面定义的构造函数各被用到了一次。

测试结果:
在这里插入图片描述
练习7.12:

class Sales_data {public:Sales_data() = default;Sales_data(const std::string &book): bookNo(book) {}Sales_data(const std::string &book, const unsigned num, const double sellp, const double salep);Sales_data(std::istream &is) {is >> *this};public:std::string isbn()const {return bookNo;}public:std::string bookNo;//书籍编号unsigned units_sold = 0;//销售量double sellingprice = 0.0;//原始价格double saleprice = 0.0;//实际价格double discount = 0.0;//折扣
};

练习7.13:

#include <iostream>
#include "Sales_data.h"
using namespace std;int main()
{cout<<"请输入交易记录(ISBN,销售额,原价,实际售价):"<<endl;Sales_data total(cin);if (cin)){Sales_data trans(cin);do{if (total.isbn()==trans.isbn())total.combine(trans);else{print(cout,total);cout<<endl;total = trans;}}while(read(cin,trans));print(cout,total);cout<<endl;}else{cerr<<"No data?!"<<endl;return -1;}return 0;
}

练习7.14:

Sales_data (const std::string &book):bookNo(book),units_sold(0),sellingprice(0),saleprice(0),discount(0){
}

练习7.15:

#include <iostream>
#include <string>
using namespace std;
class Person {private:string strName;string strAddress;public:Person() = default;Person(const string &name,const string &add){strName = name;strAddress = add;}Person(std::istream &is){is>>*this;} //这里的<<需要重载public:string getName()const{return strName;}string getAddress() const{return strAddress;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DotNetCore Web应用程序中的Session管理

原文来自互联网&#xff0c;由长沙DotNET技术社区编译。如译文侵犯您的署名权或版权&#xff0c;请联系小编&#xff0c;小编将在24小时内删除。限于译者的能力有限&#xff0c;个别语句翻译略显生硬&#xff0c;还请见谅。作者简介&#xff1a;Jon&#xff08;Jonathan&#x…

css3是什么 ptml_CSS3

CSS3HTMLCSSJavaScript结构表项交互如何学习&#xff1f;CSS是什么CSS怎么用(快速入门)CSS选择器(重点难点)美化网页(文字、阴影、超链接、列表、渐变...)盒子模型浮动定位网页动画(特效效果)1、初识CSS1.1、什么是CSSCascading Style Sheet(层叠样式表)CSS&#xff1a;表现(美…

python docx runs_别再问我Python怎么操作Word了!

安装docx是一个非标准库&#xff0c;需要在命令行(终端)中使用pip即可安装pip install python-docx一定要注意&#xff0c;安装的时候是python-docx而实际调用时均为docx!前置知识Word中一般可以结构化成三个部分&#xff1a;文档Document段落Paragraph文字块Run也就是Document…

【要闻】如何基于K8s管理1600个微服务?某数字化银行秘诀公开

Cloud Foundry Foundation宣布KubeCF为新孵化项目Cloud Foundry Foundation是开放源代码项目的聚集地&#xff0c;简化了开发人员的体验&#xff0c;近日其宣布&#xff0c;KubeCF已成为该基金会的孵化项目&#xff0c;并已发布版本1.0.1。KubeCF是Cloud Foundry应用程序运行时…

如何用 Blazor 实现 Ant Design 组件库?

本文主要分享我创建 Ant Design of Blazor 项目的心路历程&#xff0c;已经文末有一个 Blazor 线上分享预告。Blazor WebAssembly 来了&#xff01;Blazor 这个新推出的前端 Web 框架&#xff0c;想必是去年 .NET Core 3.0 发布时才进入 .NET 开发者的视线的。但其实&#xff0…

.NET Core开发实战(第28课:工作单元模式(UnitOfWork):管理好你的事务)--学习笔记...

28 | 工作单元模式&#xff08;UnitOfWork&#xff09;&#xff1a;管理好你的事务工作单元模式有如下几个特性&#xff1a;1、使用同一上下文2、跟踪实体的状态3、保障事务一致性我们对实体的操作&#xff0c;最终的状态都是应该如实保存到我们的存储中&#xff0c;进行持久化…

《C++ Primer》7.3.2节练习

练习7.27: #include <iostream> #include <cstring> using namespace std;class Screen {private:unsigned height 0, width 0;unsigned cursor 0;string contents;public:Screen() default;Screen(unsigned ht, unsigned wd): height(ht), width(wd), conten…

【实战 Ids4】║ 控制台密码模式搭配Ocelot网关

&#xff08;此岁只能云赏樱了&#xff09;书接上文&#xff0c;这些天一直在研究IdentityServer4&#xff08;下文简称Ids4&#xff09;框架&#xff0c;发现有很多有意思&#xff0c;或者说比我想象中的知识点&#xff0c;可扩展的多&#xff0c;所以比较开心能钻研进去&…

《C++ Primer》7.3.3节练习

练习7.31: 满足题意的程序如下所示&#xff1a; class X;//声明类型X class Y//定义类型Y {X* x; }; class X//定义类型X {Y y; };类X的声明称为前向声明&#xff0c;它向程序中引入了名字X并且指明X是一种类类型。对于类型X来说&#xff0c;此时我们已知它是一个类类型&#…

.NET Core 如何生成信用卡卡号

点击上方蓝字关注“汪宇杰博客”导语上个月我写了《.NET Core 如何验证信用卡卡号》&#xff0c;不少朋友表示挺有兴趣。在金融科技行业的实际工作中&#xff0c;通常还需要生成信用卡卡号用来测试&#xff0c;今天我就来教大家如何生成信用卡卡号。上回的改进上篇文章写完后&a…

python怎么爬虎牙_使用python爬虫框架scrapy抓取虎牙主播数据

前言本文利用python的scrapy框架对虎牙web端的主播、主播订阅数、主播当前观看人数等基本数据进行抓取&#xff0c;并将抓取到的数据以csv格数输出&#xff0c;以及存储到mongodb中思路观察虎牙网站后确认所有频道url都在www.huya.com/g中的&#xff0c;而主播房间数据则是ajax…

《C++ Primer》7.3.4节练习

练习7.32: 要想让clear函数作为Screen的友元&#xff0c;只需要在Screen类中做出友元声明即可。本题的真正关键之处是程序的组织结构&#xff0c;我们必须首先定义Window_mgr类&#xff0c;其中声明clear函数&#xff0c;但是不能定义它&#xff1b;接下来定义Screen类&#xf…

.NET Core开发实战(第29课:定义仓储:使用EF Core实现仓储层)--学习笔记

29 | 定义仓储&#xff1a;使用EF Core实现仓储层首先定义仓储层的接口&#xff0c;以及仓储层实现的基类&#xff0c;抽象类仓储层的接口namespace GeekTime.Infrastructure.Core {/// <summary>/// 包含普通实体的仓储/// 约束 TEntity 必须是继承 Entity 的基类&#…

ueditor单图上传iframe跨域_UEditor单图上传(simpleupload)跨域问题解决方案

代码实现首先我们需要在ueditor.all.js文件中找到原本的单图上传部分的代码搜索关键字 simpleupload&#xff0c;如下图所示&#xff1a;然后找到上传图片的代码片段&#xff0c;如下图所示&#xff1a;然后把 domUtils.on的 input 绑定的事件注释掉或删除掉替换成以下代码:inp…

StringBuilder内存碎片对性能的影响

TL;DR:StringBuilder内部是由多段 char[]组成的半自动链表&#xff0c;因此频繁从中间修改 StringBuilder&#xff0c;会将原本连续的内存分隔为多段&#xff0c;从而影响读取/遍历性能。连续内存与不连续内存的性能差&#xff0c;可能高达 1600倍。背景用 StringBuilder的用户…

java 双击_利用java开发一个双击执行的小程序

之前我们利用java写了很多东西&#xff0c;但是好像都没有什么实际意义。因为有意义桌面小程序怎么都得有个界面&#xff0c;可是界面又不太好搞。或者 了解到这一层的人就少之又少了。呀&#xff0c;是不是还得开辟一些版面来介绍awt和 swing。。。算了 先把这个 双击执行的小…

开发人员如何学习 Kubernetes

虽然“容器编排平台”还没有被整个行业大范围采用&#xff0c;但在这一领域 Kubernetes 已经战胜其他选手&#xff0c;成为了事实标准。近两年的 Web 开发技术社区&#xff0c;随便打开一两个群&#xff0c;你都能看到人们在谈 Kubernetes。很多开发人员&#xff0c;包括曾经的…

安装 java decompiler_Eclipse离线安装Java Decompiler插件(反编译)

Java Decompiler是Java语言的反编译工具&#xff0c;具体介绍见博客Java Decompiler(Java反编译工具)1、下载插件Eclipe的Java Decompiler插件名为JD-Eclipse&#xff0c;2、安装插件Ecipse安装JD-Eclipse(即Java Decompiler)插件步骤如下&#xff1a;打开Help --> Install …

给 ABP vNext 应用安装私信模块

在上一节五分钟完成 ABP vNext 通讯录 App 开发 中&#xff0c;我们用完成了通讯录 App 的基础开发。这本章节&#xff0c;我们会给通讯录 App 安装私信模块&#xff0c;使不同用户能够通过相互发送消息&#xff0c;并接收新私信的通知。在章节的最后&#xff0c;笔者将演示模块…

《C++ Primer》7.5.2节练习

练习7.41: #include <iostream> #include <string> using namespace std;class Sales_data {friend std::istream &read(std::istream &is, Sales_data &item);friend std::ostream &print(std::ostream &os, const Sales_data &item);pu…