在多继承布局中分别覆盖虚方法

Overriding virtual methods separately in multiple inheritance layout

有没有办法在基 class 中分别覆盖具有相同名称(来自两个父级)的函数?

我正在寻找这样的东西:

#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
}

不,你不能这样做。如果您想避免通过 class C; 显式范围解析访问 class A;,请将 A 设为私有:

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

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

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