调用不是来自直系父亲的重写方法

Calling an overridden method not from a direct father

本文关键字:父亲 重写 方法 调用      更新时间:2023-10-16

我遇到过这样一种说法,即"C++中的类方法可以从各个级别调用所有被覆盖的方法"。例如,考虑 A 类、B 类和 C 类。它们具有以下层次结构:

A<-B<-C

意思是 B 来自 A 的异位和来自 B 的 C 异位。所有类都有一个方法foo。如何从 C 的方法foo调用 A 的方法foo

我知道现在在 Java 和 C# 中是可能的,但在C++中可能吗?

您可以将范围解析运算符与父类一起使用。 例如:

#include <iostream>
class A {
public:
virtual void foo() { std::cout << "A"; }
};
class B: public A {
public:
void foo() override { std::cout << "B"; }
};
class C: public B {
public:
void foo() override { 
A::foo();
B::foo();
std::cout << "C"; 
}
};
int main() {
C c;
c.foo();
}