本章内容:
- 友元类
- 友元类方法
- 嵌套类
- 引发异常
- 异常类
- 运行阶段类型识别
- dynamic_cast和typeid
- static_cast、const_cast和reiterpret_cast
15.1 友元
15.1.1 友元类
就是在类中声明一个友元类,可以使用该类中所有成员除了protect
友元类应该在后面被声明
15.1.2 友元成员函数
将类中的某成员函数声明为另一个类的友元
friend void Remote::set_chan(Tv & t, int c);
这种声明方法必须要将remote放在tv前面声明,因为编译器要提前知道remote的作用域里面有什么
15.1.3 其他友元关系
互相为友元,就注意前面的不能定义只能声明
15.1.4 共同的友元
就是像重载一样
15.3 异常
15.3.1 调用abort()
位于头文件cstdlib中,想标准错误流发送消息abnormal program termination,然后终止程序。返还一个随实现而不同的值,告诉操作系统处理失败。
可以用exit()来刷新缓冲区
15.3.2 返回错误码
就是用其他特殊值来标识错误
15.3.3 异常机制
- 引发异常
- 使用处理程序捕获异常
- 使用try块
throw语句的本质是跳转程序到另一条语句,后值为catch括号中的值,两者配对
catch语句用于捕获异常
try就是解决方案
如果没有try,只有throw,会自动调用abort()函数
15.3.4 将对象用作异常类型
就是专门创一个类用于处理异常,具体用法和之前也一样
15.3.6 栈解退
在异常所处的函数的上层函数使用try
15.3.8 exception类
what()虚方法返回字符串
1.stdexcept异常类
2.bad_alloc
15.3.9 异常、类和继承
和普通的没多大区别
15.3.10 异常什么时候会迷失方向
- 如果在异常规范的函数中引发,则必须与规范列表中的某种异常匹配,否则就是意外异常,会导致程序终止
- 异常不在函数中引发则必须被捕获,否则就是未捕获异常,会导致程序终止
但是可以靠修改terminate()因调用的函数来处理
15.3.11 注意事项
- 设计时加入异常处理
- 不适用于模板函数
- 与动态分配不是总能配合
本章深入探讨了C++中的友元类和友元成员函数,包括它们的声明和作用。同时,介绍了异常处理的概念,如调用`abort()`、异常机制的工作原理、如何创建和使用异常类,以及异常与类继承的关系。异常处理中的注意事项,如异常规范和未捕获异常的处理,也是本章的重点。
1758

被折叠的 条评论
为什么被折叠?



