在多继承的时候,如果一个类继承同时继承自class A和class B,而class A和B中都有一个函数叫foo(),如何明确的在子类中指出override哪个父类的foo()?

来源:互联网 发布:小区网络监控设计方案 编辑:程序博客网 时间:2024/06/04 18:53


首先,fooA,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

0 0
原创粉丝点击