在构造函数和析构函数中调用虚函数时,采用静态联编(他们所调用的虚函数是自己类中定义的函数)
如果在自己类中没有实现这个虚函数,则调用的是基类中的虚函数,绝不会是任何在派生类中重定义的虚函数
//构造函数和析构函数中调用虚函数
#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 main
This is Base func2()