基类通常定义一个虚析构函数,通过基类指针析构派生类对象时不会出现未定义的行为. 如果一个类定义析构函数,编译器不会为这个类合成移动操作. 虚函数覆盖,可以显式地加override,可以让程序员的意图更加清晰,同时让编译器可以为我们返现一些错误. 派生类,先初始化基类的部分,然后再按照声明的顺序依次初始化派生类的成员. 不希望一个类被继承,将它定义为final 和内置指针一样,智能指针也支持派生类到基类的类型转换.该转换只对指针和引用有效. 同时受可访问性的限制,如D继承自B,如不是公有继承,用户…