子类重写父类的虚函数后需要调用父类的虚函数
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指针永远指向真正实例化的对象地址
相关文章推荐
- C++父类子类间函数重定义,虚函数重写(覆盖)以及重载
- C++进阶—>子类、父类、父父类间虚函数调用详解
- java 通过子类怎么调用父类已经被重写的方法
- Java父类对象调用子类实体:方法重写与动态调用
- Java中,重写的情况下子类调用父类
- 子类与父类之间的方法重载、隐藏、重写与虚方法调用
- Java 子类未重写的方法调用父类还是子类的问题
- 子类中方法与父类中形成重写关系,可以在构造方法中用super来调用父类中的该方法
- Java__子类中调用父类重写的方法。
- 1.为什么需要继承?如何继承?继承到什么? 2.方法的重载与重写的区别 3.类型的自动转换和强制转换 4.子类特有的方法的调用规则 5.子类重写的方法的调用规则 6.多态的理解 7.面向对象的三大特征
- JavaSE8基础 多态 子类重写了父类的普通方法 父类引用调用子类中重写的方法
- java方法重写的时候,一个调用父类还是子类方法的问题
- Java中不要在父类的构造方法中调用会被子类重写的方法
- Java父类对象调用子类实体:方法重写与动态调用
- 关于子类重写父类私有虚函数
- SubClasing用法--子类重写父类方法,父类直接调用实现方式
- 子类重写父类方法时强制调用父类方法
- 虚函数与非虚函数在父类、子类之间的调用
- JavaSE8基础 多态扩展性 父类引用作为函数参数,调用所装子类对象的重写方法
- 子类重写父类的方法,用super调用父类中的原方法