C++ primer Plus(第六版)第十三章 类继承 章节编程练习答案
1.以下面的类声明为基础:
派生出一个Classic类,并添加一组char成员,用于存储指出CD中主要作品的字符串。修改上述声明,使基类的所有函数都是虚的。如果上述定义声明的某个方法并不需要,则请删除它。使用下面的程序测试您的产品:
完成如下:
2.完成练习1,但让两个类使用动态内存分配而不是长度固定的数组来记录字符串。
思路:练习1中,我们的成员变量的类型是使用的char数组,本题要求我们改为动态内存分配,所以成员变量的类型我们可以选为char指针,那么这里最最需要注意的就是,这样改过之后,析构函数就必须要发挥作用了,析构函数内部就必须要把构造函数里面初始化时动态分配的内存给delete掉。
首先对于类声明的头文件,我们只需要把char数组都改为char指针即可,修改后如下:
接下来对于实现文件呢,一方面注意构造函数内部初始化时,都必须首先进行动态内存分配,然后才可以进行strcpy_s函数的赋值,另一方面就是析构函数必须把构造函数里面动态分配的内存都删掉。其他内容不需要改变。
所以实现文件cd.cpp修改后如下:
测试代码不变
3.修改baseDMA-lacksDMA-hasDMA类层次,让三个类都从一个ABC派生而来,然后使用与程序清单13.10相似的程序对结果进行测试。也就是说,它应使用ABC指针数组,并让用户决定要创建的对象类型。在类定义中添加virtual View()方法以处理数据显示。
4. Benevolent Order of Programmers用来维护瓶装葡萄酒箱。为描述它,BOP Portmaster设置了一个Port类,其声明如下:
{……代码省略……}
show()方法按下面的格式显示信息:
Brand: Gallo
Kind: tawny
Bottles: 20
operator<<()函数按下面的格式显示信息(末尾没有换行符):
Gallo, tawny, 20
PortMaster完成了Port类的方法定义后派生了VintagePort类,然后被解职——因为不小心将一瓶45度Cockburn泼到了正在准备烤肉调料的人身上,VintagePort类如下所示:
{……代码省略……}
您被指定负责完成VintagePort。
a. 第一个任务是重新创建Port方法定义,因为前任被开除时销毁了方法定义。
b. 第二个任务是解释为什么有的方法重新定义了,而有些没有重新定义。
c. 第三个任务是解释为何没有将operator=()和operator<<()声明为虚的。
d. 第四个任务是提供VintagePort中各个方法的定义。
已知头文件如下:
其余完成如下:
C++ primer Plus(第六版)第十三章 类继承 章节编程练习答案相关推荐
- 【C++ Primer】第十三章 类继承
一,类继承 定义:从已有的类派生出新的类,而派生类继承了原有类的特征,包括方法. 目标:提供可重用的代码 二,一个简单的基类 #include <iostream ...
- 《C++ Primer Plus(第六版)》(25)(第十三章 类继承 笔记)
1.派生类构造函数的要点: 首先创建基类对象; 应通过成员初始化列表将基类的初始化信息传递给基类的构造函数; 派生类构造函数应初始化新增的数据成员 2.首先执行派生类的析构函数,然后自动调用基类的析构 ...
- C Primer Plus(第六版)第三章 数据和C
笔记记录 1.float 类型可以储存带小数的数字. 2.printf()中使用%f来处理浮点值.%.2f中的.2用于精确控制输出,指定输出的浮点数只显示小数点后面两位. 3.scanf()函数用于读 ...
- C Primer Plus第六版第五章运算符,表达式,语句源码
源码 //5.1#include<stdio.h> #define ADJUST 7.31 int main(void) {const double SCALE = 0.333;doubl ...
- C Primer Plus第六版第七章编程题目与参考答案⭐
1.编写一个程序读取输入,读到#字符停止,然后报告读取的空格数.换行符数和所有其他字符的数量. #include <stdio.h> #define STOP '#' #define SP ...
- C Primer Plus (第六版) 第七章 7.11编程练习 参考答案
11.ABC 邮购杂货店出售的洋蓟售价为 2.05 美元/磅,甜菜售价为 1.15美元/磅,胡萝卜售价为 1.09美元/磅.在添加运费之前,100美元的订单有5%的打折优惠.少于或等于5磅的订单收取6 ...
- c primer plus 第六版 第五章练习
/* 1.编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的 时间.使用#define或const创建一个表示60的符号常量或const变量.通 过while循环让用户重复输入值,直到用户输入小 ...
- c primer plus第六版 第七章
/*1.编写一个程序读取输入,读到#字符停止,然后报告读取的空格 数.换行符数和所有其他字符的数量.*/ #include<stdio.h> #include<ctype.h> ...
- c++ primer plus 第六版第十七章学习笔记
Ostream类字符显示方法(需用对象调用);put(char)(用于单个字符显示):write(char*,int)(用于显示int指定的多个字符,不检查字符串是否越界),其第一个参数为读取数据的地 ...
最新文章
- Zabbix监控CPU与实际值不符合,
- 双目标帕累托优化_结构力学中的优化分析(3) —— 结构优化分析
- flash期末作业成品_基于“新工科”的工科物理作业模式研究
- 小米机器人虚拟墙设置_扫地机器人虚拟墙应该怎么放置使用
- Java学习笔记——反射
- 设计模式(一)预备知识
- java 课后习题 随机数统计
- NoClassDefFoundError 解决方法
- 小米平板位置服务器,小米平板 2
- 数字后端基本概念介绍<site>
- hwclock(Linux)
- 计算机二级(C语言)备考
- Mac 如何删除应用、软件
- python 创建netcdf_如何用python netCDF4创建netCDF文件?
- spss分析 sus量表高低分组
- 点击图片 实现放大功能
- 设计模式学习-工厂模式
- jquery-qrcode客户端二维码生成类库扩展--融入自定义Logo图片
- 无限级分类的原理(递归方法)
- Linux进程调度 - 实时调度器 LoyenWang
热门文章
- 《Python编程 从入门到实践》第八章 ——函数习题
- ScyllaDB安装
- 字典(骚气的加上二叉排序树)
- java的书可以二手_基于jsp的二手书图书-JavaEE实现二手书图书 - java项目源码
- 计算机网络-数据链路层(超级无敌详细)
- AVA后端知识点碎片化整理 基础篇(十七) 小常识
- Tame Me【驯服我】
- 【Please, upgrade your dependencies to the actual version of cor问题】
- DNA非编码区,外显子,内含子突变区别
- [架构之路-181]-《软考-系统分析师》-19- 系统可靠性分析与设计 - 2-容错性: 软件容错技术