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(第六版)第十三章 类继承 章节编程练习答案相关推荐

  1. 【C++ Primer】第十三章 类继承

    一,类继承         定义:从已有的类派生出新的类,而派生类继承了原有类的特征,包括方法.         目标:提供可重用的代码 二,一个简单的基类 #include <iostream ...

  2. 《C++ Primer Plus(第六版)》(25)(第十三章 类继承 笔记)

    1.派生类构造函数的要点: 首先创建基类对象; 应通过成员初始化列表将基类的初始化信息传递给基类的构造函数; 派生类构造函数应初始化新增的数据成员 2.首先执行派生类的析构函数,然后自动调用基类的析构 ...

  3. C Primer Plus(第六版)第三章 数据和C

    笔记记录 1.float 类型可以储存带小数的数字. 2.printf()中使用%f来处理浮点值.%.2f中的.2用于精确控制输出,指定输出的浮点数只显示小数点后面两位. 3.scanf()函数用于读 ...

  4. C Primer Plus第六版第五章运算符,表达式,语句源码

    源码 //5.1#include<stdio.h> #define ADJUST 7.31 int main(void) {const double SCALE = 0.333;doubl ...

  5. C Primer Plus第六版第七章编程题目与参考答案⭐

    1.编写一个程序读取输入,读到#字符停止,然后报告读取的空格数.换行符数和所有其他字符的数量. #include <stdio.h> #define STOP '#' #define SP ...

  6. C Primer Plus (第六版) 第七章 7.11编程练习 参考答案

    11.ABC 邮购杂货店出售的洋蓟售价为 2.05 美元/磅,甜菜售价为 1.15美元/磅,胡萝卜售价为 1.09美元/磅.在添加运费之前,100美元的订单有5%的打折优惠.少于或等于5磅的订单收取6 ...

  7. c primer plus 第六版 第五章练习

    /* 1.编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的 时间.使用#define或const创建一个表示60的符号常量或const变量.通 过while循环让用户重复输入值,直到用户输入小 ...

  8. c primer plus第六版 第七章

    /*1.编写一个程序读取输入,读到#字符停止,然后报告读取的空格 数.换行符数和所有其他字符的数量.*/ #include<stdio.h> #include<ctype.h> ...

  9. c++ primer plus 第六版第十七章学习笔记

    Ostream类字符显示方法(需用对象调用);put(char)(用于单个字符显示):write(char*,int)(用于显示int指定的多个字符,不检查字符串是否越界),其第一个参数为读取数据的地 ...

最新文章

  1. Zabbix监控CPU与实际值不符合,
  2. 双目标帕累托优化_结构力学中的优化分析(3) —— 结构优化分析
  3. flash期末作业成品_基于“新工科”的工科物理作业模式研究
  4. 小米机器人虚拟墙设置_扫地机器人虚拟墙应该怎么放置使用
  5. Java学习笔记——反射
  6. 设计模式(一)预备知识
  7. java 课后习题 随机数统计
  8. NoClassDefFoundError 解决方法
  9. 小米平板位置服务器,小米平板 2
  10. 数字后端基本概念介绍<site>
  11. hwclock(Linux)
  12. 计算机二级(C语言)备考
  13. Mac 如何删除应用、软件
  14. python 创建netcdf_如何用python netCDF4创建netCDF文件?
  15. spss分析 sus量表高低分组
  16. 点击图片 实现放大功能
  17. 设计模式学习-工厂模式
  18. jquery-qrcode客户端二维码生成类库扩展--融入自定义Logo图片
  19. 无限级分类的原理(递归方法)
  20. Linux进程调度 - 实时调度器 LoyenWang

热门文章

  1. 《Python编程 从入门到实践》第八章 ——函数习题
  2. ScyllaDB安装
  3. 字典(骚气的加上二叉排序树)
  4. java的书可以二手_基于jsp的二手书图书-JavaEE实现二手书图书 - java项目源码
  5. 计算机网络-数据链路层(超级无敌详细)
  6. AVA后端知识点碎片化整理 基础篇(十七) 小常识
  7. Tame Me【驯服我】
  8. 【Please, upgrade your dependencies to the actual version of cor问题】
  9. DNA非编码区,外显子,内含子突变区别
  10. [架构之路-181]-《软考-系统分析师》-19- 系统可靠性分析与设计 - 2-容错性: 软件容错技术