假设我有类 Foo
和 Bar
设置如下:
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;
}
};
正如在代码中注释的那样,我'd like to be able to call the base class'的函数是'm overriding. In Java there'的 super.funcname()
语法 . 这可能在C?
7 回答
如果要从派生类中调用基类函数,只需在提及基类名称(如 Foo::printStuff() )的情况下调用重写函数 .
代码在这里
同样,您可以在运行时确定使用该类的对象(派生或基础)调用哪个函数 . 但这要求您在基类中的函数必须标记为虚拟 .
代码如下
C语法是这样的:
是,
它与Java中的
super
相同,只是它允许在具有多个继承时从不同的基础调用实现 .有时你需要调用基类的实现,当你不在派生函数中时...它仍然有效:
为了防止你为你班上的很多功能做到这一点:
如果要重命名Foo,这可能会节省一些写入 .
检查一下......
产量
最好的方法是使用 base::function ,如@sth
是的,你可以打电话给它 . 用于在子类中调用父类函数的C语法是
阅读有关函数overriding的更多信息 .