在多继承布局中单独覆盖虚方法

时间:2016-02-14 16:48:18

标签: c++ multiple-inheritance virtual-functions

有没有办法在基类中单独覆盖具有相同名称(来自两个父项)的函数?

我正在寻找类似的东西:

#include<iostream>

using namespace std;

class A {
public:
    virtual void foo() {
        cout << "A::Foo" << endl;
    }
};

class B {
public:
    virtual void foo() {
        cout << "B::Foo" << endl;
    }
};

class C : public A, public B {
public:
    /*virtual void A::foo() {
        cout << "C::Foo" << endl;
    }*/ 
};

int main() {
    C c;
    c.A::foo(); // want to get C::Foo here
}

1 个答案:

答案 0 :(得分:1)

不,你不能这样做。如果您想通过class A;明确的范围解析来避免访问class C;,请A私有:

class C : private A, public B {
       // ^^^^^^^
public:
};

如果您想更喜欢A的实施,您可以明确指定要使用的内容:

class C : public A, public B {
public:
    using A::foo();
};