首页 > 后端开发 > C++ > 重写后如何在 C 中调用基类的虚函数?

重写后如何在 C 中调用基类的虚函数?

DDD
发布: 2024-12-05 11:22:10
原创
1001 人浏览过

How Do I Call a Base Class's Virtual Function in C   After Overriding It?

重写后调用 C 中基类的虚函数

在软件开发中,经常会遇到需要调用基类的场景类的函数来自派生类,即使您已经重写了该函数。在 C 中,与 Java 不同,您不能使用简单的 super.funcname() 语法来实现此目的。

考虑以下代码片段:

class Foo {
public:
    int x;

    virtual void printStuff() {
        std::cout << x << std::endl;
    }
};

class Bar : public Foo {
public:
    int y;

    void printStuff() {
        // I would like to call Foo.printStuff() here...
        std::cout << y << std::endl;
    }
};
登录后复制

在此示例中,Bar 继承自 Foo并覆盖 printStuff() 函数。但是,您可能希望在某些上下文中保留 Foo::printStuff() 的原始功能。

要在 C 中调用基类的 printStuff() 函数,您必须使用 :: 显式命名基类操作员。具体方法如下:

class Bar : public Foo {
  // ...

  void printStuff() override {  // help the compiler to check
    Foo::printStuff(); // calls base class' function
  }
};
登录后复制

在此修改后的代码中,在重写的 Bar::printStuff() 函数中调用 Foo::printStuff() 基类函数。 override 关键字帮助编译器验证该函数确实重写了基类函数。

通过显式调用基类函数,您可以灵活地使用 printStuff() 的基类和派生类实现。这在各种场景中都很有用,例如在重写实现之前或之后调用原始函数来执行常见任务。

以上是重写后如何在 C 中调用基类的虚函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板