<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">最近写程序的时候发现,派生类对象的基类函数如果调用基类虚函数,则它将调用的是派生类的对应函数,而不是我想调用的基类的对应函数。</span>
下面用一个例子来说明:
//基类
class Base
{
public:
void funA();
virtual void funB();
protected:
private:
};
void Base::funA(){
cout<<"这是Base类funA()"<<endl;
funB();
}
void Base::funB(){
cout<<"这是Base类funB()"<<endl;
}
//派生类
class Derivate :public Base
{
public:
virtual void funB();
protected:
private:
};
void Derivate::funB(){
cout<<"这是Derivate类funB()"<<endl;
}
我这里创建了一个基类Base和一个派生类Derivate,其中基类有一个函数funA()和一个虚函数funB()。派生类中,我重写函数funB()。
在Base::funA()中我调用了funB(),那么我想要调用的应该是Base::funB()。现在我们试写一下测试:
void main(){