c++ - 调用重写的方法而不是直接的父亲

标签 c++ inheritance

我听到一个说法,“C++ 中类的方法可以调用所有级别的所有重写方法”。例如,考虑 A 类、B 类和 C 类。它们具有以下层次结构:

A<-B<-C

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

我知道现在可以在 Java 和 C# 中使用,但在 C++ 中可以吗?

最佳答案

您可以使用 scope resolution operator与父类。例如:

#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();
}

关于c++ - 调用重写的方法而不是直接的父亲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57940031/

相关文章:

c++ - 继承理解对派生类的访问被拒绝

java - java中如何查找数组中某个对象的类型

java - 仅一个共享属性的继承的优点和缺点

maven-2 - Maven 站点插件 : How does menu inheritance work?

c++ - 在c++中包含与项目目录相关的文件

c# - 从 C# 过渡到 C++,好的引用资料?

c++ - 如何声明一个可以设置为 std::chrono::milliseconds 类型参数的变量

c++ - 在类公共(public)方法中创建一个新结构

c++ - 链接来自 MATLAB Mex 库的错误

c++ - 二叉树插入指针问题