在构造函数和析构函数中调用虚函数时,采用静态联编(他们所调用的虚函数是自己类中定义的函数)
如果在自己类中没有实现这个虚函数,则调用的是基类中的虚函数,绝不会是任何在派生类中重定义的虚函数
//构造函数和析构函数中调用虚函数#include <iostream>using namespace std;class Base{public:Base(){func1();}virtual void func1()//虚函数{cout <<"This is Base func1() "<<endl;}virtual void func2(){cout <<"This is Base func2() "<<endl;}~Base(){func2();}};class Subclass :public Base{public:virtual void func1() //虚函数{cout <<"This is Subclass func1() "<<endl;} virtual void func2() //虚函数{cout <<"This is Subclass func2() "<<endl;} };int main ( ){Subclass sc; cout<<"Exit main"<<endl;return 0; }
结果
This is Base func1()Exit mainThis is Base func2()