C++11后加入了=delete操作, 让我们可以明确删除某些函数的生成
7 为多态基类声明virtual析构函数
对所有多态基类来说, 声明虚析构函数非常重要, 这是因为派生类如果被基类指针指着, 然后被...STL的所有容器都没有虚函数
C++11后引入了final关键字可以用来中断类后续的继承行为
当程序在析构的时候, 会从最深处开始析构, 逐步调用析构函数, 因此基类的虚析构需要一个定义, 可以是空定义...8 别让异常逃离析构函数
由于在C++中两个异常同时存在会导致未定义行为, 因此我们不应该让析构函数上报异常, 这是因为析构函数是会被自动调用的, 当一个对象析构而抛出异常时, 同个作用域的其它对象的析构也会被自动执行...close函数来执行和析构同样的行为, 这样用户就能自己处理可能发生的析构的异常, 同时依然要给真正的析构用try-catch包裹起到双保险的作用
9 绝不在构造和析构过程中调用virtual函数
派生类构造期间...析构函数尽管调用顺序相反但是思路一致
所以不要在析构/构造过程中调用虚函数
补偿方法是将需要让派生类执行的函数以非虚函数的形式写好, 然后将其所需的变量通过构造函数在构造初值列中进行传递.