gpt4 book ai didi

c++ - 如果我要覆盖它,我可以调用基类的虚函数吗?

转载 作者:bug小助手 更新时间:2023-10-28 01:31:52 24 4
gpt4 key购买 nike

假设我有这样的类 FooBar 设置:

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;
}
};

正如代码中注释的那样,我希望能够调用我正在覆盖的基类函数。在 Java 中有 super.funcname() 语法。这在 C++ 中可行吗?

最佳答案

在 C++ 中,您必须在调用派生类方法时显式命名基类。这可以通过派生类的任何方法来完成。覆盖是同名方法的特例。在 Java 中没有多重继承,因此您可以使用 super 来唯一命名基类。 C++ 的语法是这样的:

class Bar : public Foo {
// ...

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

关于c++ - 如果我要覆盖它,我可以调用基类的虚函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/672373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com