C++-为什么不要在构造函数和析构函数中调用虚函数?

是否可以调用

答案是可以调用,编译器不会报错。

弊端

  1. 由于类的构造次序是由基类到派生类,所以在构造函数中调用虚函数,虚函数是不会呈现出多态的。
  2. 类的析构是从派生类到基类,当调用继承层次中某一层次的类的析构函数时意味着其派生类部分已经析构掉,所以也不会呈现多态。
  3. 因此如果在基类中声明的纯虚函数并且在基类的析构函数中调用之,编译器会发生错误。