C++primer 练习15.15
- // 15_15.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include<iostream>
- #include<string>
- using namespace std;
- class Quote
- {
- public:
- Quote() = default;
- Quote(const string &book,double p):bookNo(book),price(p){}
- const string& isbn()const { return bookNo; }
- virtual double net_price(size_t n)const
- {
- return n*price;
- }
- private:
- string bookNo;
- protected:
- double price = 0.0;
- };
- class Dis_Quote :public Quote
- {
- public:
- Dis_Quote() = default;
- Dis_Quote(const string &book,double p,size_t n,double d):Quote(book,p),quantity(n),discount(d){}
- virtual double net_price(size_t n)const = ;
- protected:
- size_t quantity = ;
- double discount = 0.0;
- };
- class Bulk_Quote :public Dis_Quote
- {
- public:
- Bulk_Quote() = default;
- Bulk_Quote(const string &book,double p,size_t n,double d):Dis_Quote(book,p,n,d){}
- virtual double net_price(size_t n)const override
- {
- if (n > quantity)
- return n*( - discount)*price;
- else
- return n*price;
- }
- };
- class Exercise_Quote :public Dis_Quote
- {
- public:
- Exercise_Quote() = default;
- Exercise_Quote(const string &book,double p,size_t n,double d):Dis_Quote(book,p,n,d){}
- virtual double net_price(size_t n)const override
- {
- if (n <= quantity)
- return n*( - discount)*price;
- else
- return quantity*( - discount)*price + (n - quantity)*price;
- }
- };
- double print_total(ostream &os, const Quote &item, size_t n)
- {
- double ret = item.net_price(n);
- os << "ISBN: " << item.isbn() <<
- " # sold: " << n << " total due: " << ret << endl;
- return ret;
- }
- int main()
- {
- Quote q1("lidandan", );
- Bulk_Quote q2("lidandan", , , 0.1);
- Exercise_Quote q3("lidandan", , , 0.1);
- //Dis_Quote q4;
- print_total(cout, q1, );
- print_total(cout, q2, );
- print_total(cout, q3, );
- return ;
- }
C++primer 练习15.15的更多相关文章
- Python Cookbook(第3版)中文版:15.15 C字符串转换为Python字符串
15.15 C字符串转换为Python字符串¶ 问题¶ 怎样将C中的字符串转换为Python字节或一个字符串对象? 解决方案¶ C字符串使用一对 char * 和 int 来表示, 你需要决定字符串到 ...
- 《C++ Primer》 chapter 15 TextQuery
<C++ Primer>中第15章为了讲解面向对象编程,举了一个例子:设计一个小程序,能够处理查询给定word在文件中所在行的任务,并且能够处理“非”查询,“或”查询,“与”查询.例如执行 ...
- C++ Primer 5th 第15章 面向对象程序设计
面向对象程序设计的核心思想是:数据抽象.继承和动态绑定. 数据抽象:将类的接口与实现分离: 继承:定义相似类型并对相似关系建模: 动态绑定:一定程度上上忽略相似类型间的区别,用同一方式使用它们. 1. ...
- C++ Primer Plus 第15章 友元、异常和其它
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/chudaxiakkk/article/details/30502807 第15章 友元.异常和其它 ...
- 《C++ Primer Plus》15.1 友元 学习笔记
15.1.1 友元类假定需要编写一个模拟电视机和遥控器的简单程序.决定定义一个Tv类和一个Remote类,来分别表示电视机和遥控器.遥控器和电视机之间既不是is-a关系也不是has-a关系.事实上,遥 ...
- 【读书笔记】C Primer Plus ch.15位运算 示例程序15.1 整数转换成二进制字符串
正文: https://www.zybuluo.com/RayChen/note/595213
- 《C++ Primer Plus》15.5 类型转换运算符 学习笔记
C++相对C更严格地限制允许的类型转换,并添加4个类型转换运算符,是转换过程更规范:* dynamic_cast:* const_cast:* static_cast:* reinterpret_ca ...
- 《C++ Primer Plus》15.4 RTTI 学习笔记
运行时类型识别RTTI(Runtime Type Identification) C++有三个支持RTTI的元素.* 如果可能的话,dynamic_cast运算符将使用一个指向基类的指针来生成一个指向 ...
- [C++]PAT乙级1011. A+B和C (15/15)
/* 1011. A+B和C (15) 给定区间[-2^31, 2^31]内的3个整数A.B和C,请判断A+B是否大于C. 输入格式: 输入第1行给出正整数T(<=10),是测试用例的个数.随后 ...
随机推荐
- 【转】纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- TKinter布局之grid 网格布局
1.由于我们的程序大多数都是矩形,因此特别适合于网格 布局,也就是 grid 布局. 2.使用 grid 布局的时候,我们使用 grid 函数,在里面指 定两个参数,用 row 表示行,用 colum ...
- 实时监听输入框值变化的完美方案:oninput & onpropertychange
实时监听输入框值变化的完美方案:oninput & onpropertychange: 网址:http://www.cnblogs.com/lhb25/archive/2012/11/30/o ...
- Python文件处理之文件写入方式与写缓存(三)
Python的open的写入方式有: write(str):将str写入文件 writelines(sequence of strings):写多行到文件,参数为可迭代对象 首先来看下writelin ...
- MySQL explain key_len 大小的计算
总结: 变长字段需要额外的2个字节,固定长度字段不需要额外的字节.而null都需要1个字节的额外空间,所以以前有个说法:索引字段最好不要为NULL,因为NULL让统计更加复杂,并且需要额外一个字节的存 ...
- spring基础部分——注解
注解: @Entity @Table @Column @Enumerated @Autowired @Controller @RequestMapping @RequestParam
- Android monkey介绍
Android monkey介绍 原文地址 1 简略 monkey是android下自动化测试比较重要的的一个工具,该工具可以运行在host端或者设备(模拟器或真实设备).它会向系统发送随机事件流(即 ...
- [mysql] mysql 5.6.X 慢查询日志
慢查询日志 一篇好文章,学习保存.... 打开慢查询日志 慢查询日志,顾名思义就是记录执行比较慢查询的日志. 查看是否开启慢查询日志: show variables like '%slow%'; 打开 ...
- (转帖)BootStrap入门教程 (二)
上讲回顾:Bootstrap的手脚架(Scaffolding)提供了固定(fixed)和流式(fluid)两种布局,它同时建立了一个宽达940px和12列的格网系统. 基于手脚架(Scaffoldin ...
- struts checkbox选中
<input type="checkbox" id="something" name="something" /> ↓ < ...