在多重继承布局中单独重写虚拟方法
Overriding virtual methods separately in multiple inheritance layout
有没有办法在基类中单独覆盖具有相同名称(来自两个父级(的函数?
我正在寻找这样的东西:
#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 A;
class C;
请将A
设为私有:
class C : private A, public B {
// ^^^^^^^
public:
};
如果你想更喜欢A
的实现,你可以明确指定你想要使用的内容:
class C : public A, public B {
public:
using A::foo();
};
相关文章:
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 重写虚拟函数和继承
- C++:从抽象类重写纯虚拟运算符重载
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 如何重写继承的嵌套类中存在的虚拟方法
- 重写另一个类中的虚拟方法以在 C++ 中访问其成员
- 如何在子类中重写时调用私有虚拟基类实现
- 基类能否知道派生类是否已重写虚拟方法
- 我将如何通过抽象类传递虚拟方法,但可以选择不重写
- C++重写虚拟模板化方法
- 在派生类中重写哪个基类的虚拟析构函数
- 重写模板基类中的纯虚拟函数
- 用模板方法重写虚拟方法
- 用模板化函数重写虚拟函数
- 重写虚拟函数返回类型不同,并且不是协变的
- 在多重继承布局中单独重写虚拟方法
- 重写虚拟 void 方法时返回对象?C++
- 重写虚拟方法时无法返回派生类指针
- 用可选参数重写虚拟函数
- 如何使用泛型返回类型重写虚拟函数