C++Primer(第五版 )第十五章 面向对象程序设计 章节编程练习答案

15.1  什么是虚成员?

答:

对于某些函数,基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明成虚函数。

15.2  protected 访问说明符与 private 有何区别?

答:

  • protected : 基类和和其派生类还有友元可以访问。
  • private : 只有基类本身和友元可以访问。

15.3  定义你自己的 Quote 类和 print_total 函数。

答:

15.4  下面哪条声明语句是不正确的?请解释原因。

答:

  • (a) 不正确。类不能派生自身。
  • (b) 不正确。这是定义而非声明。
  • (c) 不正确。派生列表不能出现在这。

15.6  将 Quote 和 Bulk_quote 的对象传给15.2.1节练习中的 print_total 函数,检查该函数是否正确。

答:

15.7  定义一个类使其实现一种数量受限的折扣策略,具体策略是:当购买书籍的数量不超过一个给定的限量时享受折扣,如果购买量一旦超过了限量,则超出的部分将以原价销售。

答:

15.8  给出静态类型和动态类型的定义。

答:

表达式的静态类型在编译时总是已知的,它是变量声明时的类型或表达式生成的类型。动态类型则是变量或表达式表示的内存中的对象的类型。动态类型直到运行时才可知。

15.9  在什么情况下表达式的静态类型可能与动态类型不同?请给出三个静态类型与动态类型不同的例子。

答:

基类的指针或引用的静态类型可能与其动态类型不一致。

15.11  为你的 Quote 类体系添加一个名为 debug 的虚函数,令其分别显示每个类的数据成员。

答:

15.12  有必要将一个成员函数同时声明成 override 和 final 吗?为什么?

答:

有必要。override 的含义是重写基类中相同名称的虚函数,final 是阻止它的派生类重写当前虚函数。

15.13  给定下面的类,解释每个 print 函数的机理:

在上述代码中存在问题吗?如果有,你该如何修改它?

答:

有问题,应改为

15.14  给定上一题中的类以及下面这些对象,说明在运行时调用哪个函数:

答:

  • (a) 编译时。
  • (b) 编译时。
  • (c) 编译时。
  • (d) 编译时。
  • (e) 运行时。base::print()
  • (f) 运行时。derived::print()

15.15 定义你自己的 Disc_quote 和 Bulk_quote

答:

15.18  假设给定了第543页和第544页的类,同时已知每个对象的类型如注释所示,判断下面的哪些赋值语句是合法的。解释那些不合法的语句为什么不被允许:

答:

Base *p = &d1; 合法
p = &d2; 不合法
p = &d3; 不合法
p = &dd1; 合法
p = &dd2; 不合法
p = &dd3; 不合法

 

这章的题好没意思,其余略了。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值