子类重写父类的虚函数后需要调用父类的虚函数

来源:互联网 发布:哈密顿算法求最短路径 编辑:程序博客网 时间:2024/06/05 17:14

D d对象调用add()函数时候,根据虚函数的定义,会调用到自己所重写的add()函数,如果想调用A类或者B类所重写的add()函数,用一个switch判断类型开关,实质调用A::add()或者B::add()。

#include<iostream>#include<vector>using namespace std;class BASE{public:virtual void add(){cout<<"BASE";};};class A:public BASE{public:virtual void add(){cout<<"A";};};class B:public BASE{public:virtual void add(){cout<<"B";};};class D:public A,B{#define SWITCH(X)\{\switch(this->d)\{\case 0:\A::X;\break;\case 1:\B::X;\break;\default:\this->X;\}\}\;public:D(){this->d=5;};virtual void add(){cout<<"D";};void print(){SWITCH(add())};private:int d;};int main(){D d;d.print();system("pause");return 0;}

当类存在继承关系时候,this指针永远指向真正实例化的对象地址



原创粉丝点击