在多继承布局中分别覆盖虚方法
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();
};
有没有办法在基 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();
};