77、构造函数和析构函数可以调用虚函数吗,为什么

1) 在C++中,提倡不在构造函数和析构函数中调用虚函数;

2) 构造函数和析构函数调用虚函数时都不使用动态联编,如果在构造函数或析构函数中调用虚函数,则 运行的是为构造函数或析构函数自身类型定义的版本;

3) 因为父类对象会在子类之前进行构造,此时子类部分的数据成员还未初始化,因此调用子类的虚函数 时不安全的,故而C++不会进行动态联编;

4) 析构函数是用来销毁一个对象的,在销毁一个对象时,先调用子类的析构函数,然后再调用基类的析 构函数。所以在调用基类的析构函数时,派生类对象的数据成员已经销毁,这个时候再调用子类的虚函 数没有任何意义。

原文地址:https://www.cnblogs.com/crbhf/p/14992178.html