C++Primer(第五版 )第十八章 用于大型程序的工具 章节编程练习答案

18.1  在下列 throw 语句中异常对象的类型是什么?

答:

  • (a): range_error
  • (b): exception

18.2 当在指定的位置发生了异常时将出现什么情况?

答:

指针p指向的内容不会被释放,将造成内存泄漏。

18.3  要想让上面的代码在发生异常时能正常工作,有两种解决方案。请描述这两种方法并实现它们。

答:

用智能指针

或不用指针,改用对象

18.4  查看图18.1所示的继承体系,说明下面的 try 块有何错误并修改它。

答:

细化的异常类型应该写在前面

18.6  已知下面的异常类型和 catch 语句,书写一个 throw 表达式使其创建的异常对象能被这些 catch 语句捕获:

答:

(a): throw exceptionType();
(b): throw expection();
(c): EXCPTYPE e = 1; throw e;

18.14  假设下面的 operator* 声明的是嵌套的命名空间 mathLib::MatrixLib 的一个成员:

请问你应该如何在全局作用域中声明该运算符?

答:

18.18  已知有下面的 swap 的典型定义,当 mem1 是一个 string 时程序使用 swap 的哪个版本?如果 mem1 是 int 呢?说明在这两种情况下名字查找的过程。

答:

std::swap是一个模板函数,如果是string会找到string版本;反之如果是int会找到int版本。

18.19  如果对 swap 的调用形如 std::swap(v1.mem1, v2.mem1) 将会发生什么情况?

答:

会直接调用std版的swap,但对后面的调用无影响。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值