构造函数和析构函数能否定义成虚函数

51 阅读1分钟
  • 构造函数不能定义成虚函数

原因:生成一个对象,需要调用构造函数,如果构造函数是虚函数,那么首先需要知道虚函数表指针,然后根据虚函数表指针找到虚函数表,而虚函数表指针需要在构造函数里初始化,这就矛盾了。

  • 析构函数一般定义成虚函数

原因:防止内存泄漏,当存在继承关系的时候,析构函数定义成虚函数,在子类析构时,会先调用子类的析构函数,然后调用父类析构函数。