C++Primer Plus(第六版)第十五章学习笔记:

本章深入探讨了C++中的友元类和友元成员函数,包括它们的声明和作用。同时,介绍了异常处理的概念,如调用`abort()`、异常机制的工作原理、如何创建和使用异常类,以及异常与类继承的关系。异常处理中的注意事项,如异常规范和未捕获异常的处理,也是本章的重点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章内容:

  • 友元类
  • 友元类方法
  • 嵌套类
  • 引发异常
  • 异常类
  • 运行阶段类型识别
  • 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 注意事项

  • 设计时加入异常处理
  • 不适用于模板函数
  • 与动态分配不是总能配合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值