异常处理
- 栈展开:
当抛出异常,程序寻找对应catch子句
如果没有找到,且该try嵌套在其他try中,则检查外层try匹配的catch子句
如果找不到,则退出当前函数,在调用当前函数的外层函数中继续寻找
否则程序将退出
- 捕获异常:
- noexcept:
当noexcept函数抛出异常,程序会调用terminate
如果基类虚函数承诺不会抛出异常,派生虚函数必须作出同样的承诺;反之不是
- 异常类层次:
- 使用自己定义的异常类
命名空间
- 全局命名空间:
- 内联命名空间,可以被外层命名空间直接使用
- 未命名的命名空间:
定义的变量拥有静态声明周期
- 命名空间的别名:
using:
多重继承
- 析构顺序:
class Panda : public Bear, public Endangeted{}
~Panda, ~Endangered, ~Bert, ~Zooanimal
- 虚继承:
不论虚基类在继承体系中出现多少次,在派生类中都只包含唯一一个共享的虚基类子对象
构造顺序
1.使用构造含数初始值列表提供的值构造ZooAnimal
2.构造Bear和Raccoon
3.构造Endangered
4.构造Panda
销毁顺序与构造顺序相反