调用不是来自直系父亲的重写方法
Calling an overridden method not from a direct father
我遇到过这样一种说法,即"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();
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- 在 C++ 中用派生类型重写成员函数
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 方法重写线程C++中的概念
- 为重写std::exception的库生成swig接口时出错
- 如何强制从重写方法调用重写的方法基方法?
- 用于C++的静态二进制检测或二进制重写工具和框架
- 如何将 if else 语句重写为 switch 语句
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 用 C 重写C++类
- 是否总是可以将使用递归编写的程序重写为不使用递归的程序C++,性能观点是什么?
- 重写虚拟函数和继承
- C++调用使用重写函数的父类函数
- 重写打印函数而不是覆盖基类
- 不允许在类定义之外重写
- C++有没有办法强制重写一组方法,如果其中一个方法在子类中具有重写?
- C++:从抽象类重写纯虚拟运算符重载
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 调用不是来自直系父亲的重写方法