问题:是不是虚函数的调用就一定是动态绑定?不是的
1:在类的构造函数当中,调用虚函数,也是静态绑定(构造函数中对虚函数的调用不发生动态绑定)
2:如果不是通过指针或者引用变量来调用虚函数,那就是静态绑定
代码1
class Base{public:Base(int data=10):ma(data){ cout<<"Base()"<<endl; }//虚函数virtual void show(){cout<<"Base Show()"<<endl;}//虚函数virtual void show(int){cout<<"Base Show(int)"<<endl;}~Base(){cout<<"~Base()"<<endl;}protected:int ma;};class Derive : public Base{public: Derive(int data=20):Base(data),mb(data){ cout<<"Derive()"<<endl; }void show(){cout<<"Derive Show()"<<endl;} ~Derive(){cout<<"~Derive()"<show();//发生动态绑定 pb->show();//发生动态绑定 //动态绑定,必须通过引用调用虚函数 Base &rb1=b; rb1.show();//发生动态绑定 Base &rd1=d; rd1.show();//发生动态绑定 return 0; }