在多继承的时候,如果一个类继承同时继承自class A和class B,而class A和B中都有一个函数叫foo(),如何明确的在子类中指出override哪个父类的foo()?
2014-12-23 17:09
746 查看
首先,foo在A,B总应该都是虚函数,否则就直接覆盖了,就没有这个问题了;其次,这个问题从语法角度来看似乎是无法解决。因为我们不能改原有设计(不然也没这个问题了:)),所有只好从extend来考虑:
输出:
AB A
AB B
首先,foo在A,B总应该都是虚函数,否则就直接覆盖了,就没有这个问题了;其次,这个问题从语法角度来看似乎是无法解决。因为我们不能改原有设计(不然也没这个问题了:)),所有只好从extend来考虑:
class A { public: virtual void foo(){ cout << "A" << endl; } }; class B { public: virtual void foo(){ cout << "B" << endl; } }; class EA:public A { public: virtual void foo(){ fooA(); } private: virtual void fooA() = 0; }; class EB : public B { public: virtual void foo(){ fooB(); } private: virtual void fooB() = 0; }; class AB : public EA, public EB { private: virtual void fooA(){ cout << "AB A" << endl; } virtual void fooB(){ cout << "AB B" << endl; } }; int _tmain(int argc, _TCHAR* argv[]) { AB* pab = new AB(); EA* pea = pab; EB* peb = pab; pea->foo(); peb->foo(); return 0; }
输出:
AB A
AB B
相关文章推荐
- 如果一个父类有多个子类或者一个接口有多个实现的时候,Spring是如何判断该调用哪个的呢?源码分析如下
- JS中子类中如何调用父类的同名方法(继承时候,父类的同名方法被覆盖了)
- 子类继承父类的同时又去实现一个成员变量、方法与父类相同的接口,最后调的是谁的成员变量和方法?
- JQuery ajax 如何设置同步调用(同时只能触发一个函数) 解决与层显示信息时候的冲突问题
- java中如何让一个子类不能调用从父类继承的方法
- java注解,在继承时会被子类覆盖,会被子类覆盖的函数覆盖,如果继承的子类不写注解的话,默认没有注解,即不会继承父类的注解
- 如何避免子类继承父类时候改写父类init函数
- 一个aspx页面有2个按钮,都是服务器控件,服务器上的DLL如何知道用户点击了哪个按钮,从而按钮的事件函数被调用
- C++和Java在 子类继承父类时,两者成员函数重写和重载的特性
- C#下 子类继承父类的虚方法后 使用override重写父类方法 和 不使用override重写有什么区别?
- 如果已经在一个类中定义了全局函数,在其它类文件中如何调用它?
- c++子类能从父类中继承父类的静态成员函数吗
- C++ 类的继承,子类以及之类的对象 对父类成员函数的访问权限
- 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)
- java中父类子类的继承与函数重写
- [python相关]多类继承中子类默认继承哪个父类的构造函数__init__
- java 中子类如何实现对父类私有域的继承
- java继承,多态方面的一个问题,定义一个父类对象,用子类new
- 多态继承情况下,有一个基类指针指向派生类对象,如何用它调用基类的虚函数?
- javascript面向对象编程子类如何继承父类分析