C++ 一篇搞懂多态的实现原理( 四 )

输出结果:
construct Aconstruct BDestructor BDestructor A所以要养成好习惯:

  • 一个类如果定义了虚函数,则应该将析构函数也定义成虚函数;
  • 或者,一个类打算作为基类使用,也应该将析构函数定义成虚函数 。
  • 注意:不允许构造函数不能定义成虚构造函数 。
纯虚函数和抽象类纯虚函数: 没有函数体的虚函数
class A {public:virtual void Print( ) = 0 ; //纯虚函数private:int a;};包含纯虚函数的类叫抽象类
  • 抽象类只能作为基类来派生新类使用,不能创建抽象类的对象
  • 抽象类的指针和引用可以指向由抽象类派生出来的类的对象
A a;// 错,A 是抽象类,不能创建对象A * pa ;// ok,可以定义抽象类的指针和引用pa = new A ; // 错误, A 是抽象类,不能创建对象



推荐阅读