您的位置:首页 > 其它

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

2017-08-20 19:22 375 查看


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指针永远指向真正实例化的对象地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐