重写后调用 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中文网其他相关文章!