18.1 处理异常
- 异常对象用来初始化catch的参数
- 异常声明的静态类型将决定catch语句所能执行的操作
18.2 命名空间
- 命名空间作用域后面无须分号
- 2.
对于命名空间中名字的隐藏规则来说有一个重要的例外,它是的我们可以直接访问输出运算符。这个例外是,当我们给函数传递一个类类型的对象时,除了在常规的作用域查找外还会找实参类所属的命名空间。这一例外对于传递类的引用或指针的调用同样有效
- 在函数模板中,右值引用形参可以匹配任何类型
- using声明语句声明的是一个名字,而非一个特定的函数
using NS::print();//错误:不能指定形参列表
。当我们为函数书写using声明时,该函数的所有版本都被引入到当前作用域中 - using指示将命名空间的成员提升到外层作用域中(与using声明不同)
18.3 多重继承与虚继承
- 和往常一样,派生类的析构函数只负责清除派生类本身分配的资源,派生类的成员及基类都是自动销毁的。合成的析构函数体为空
- 与只有一个基类的继承一样,对象、指针和引用的静态类型决定了我们能够使用哪些成员
- 虚继承、虚基类、不管虚基类在继承体系中出现了多少次,在派生类中都只包含唯一一个共享的虚基类子对象
- 虚基类总是先于非虚基类构造,与他们在继承体系中的次序和位置无关
- 一个类可以有多个虚基类,此时,这些虚的子对象按照他们在派生列表中出现的顺序从左向右依次构造