考虑一个简单的继承类:
class Base
{
void func() {
cout << "base" << endl;
}
};
class Derived : public Base
{
void func() {
cout << "derived" << endl;
}
};
如果我运行Derived :: func(),我得
derived
我想修改此代码以获取
base
derived
更类似于扩展而不是重写。
我已经能够获得与构造函数类似的东西,但是没有正常的函数。
非常感谢, 卢西奥
答案 0 :(得分:18)
class Derived : public Base
{
void func() {
Base::func(); // Call the base method before doing our own.
cout << "derived" << endl;
}
};
答案 1 :(得分:2)
要从派生类访问基类函数,只需使用:
Base::func();
在您的情况下,您将此作为func()
的派生实现的第一行。
答案 2 :(得分:1)
使用Base::func();
是正确的,就像其他一些人已经说过的那样。
请记住,总是首先调用基类的构造函数,然后调用派生类的构造函数。
答案 3 :(得分:0)
您已经谈过构造函数,派生类的构造函数将调用基类的构造函数,无论您是否使用继承的构造函数,它都是有意义的,因为派生类应该能够构造从基类继承的成员。默认情况下,构造函数不会被继承。
但是,&#34;正常&#34;方法采用了截然不同的方式。
首先,请确保在大多数情况下,派生类中的方法不需要在基类中调用相同名称的方法,相反,它将覆盖< / strong>基类&#39;虽然它确实继承了它。
因此,如果你真的想要调用基类1,你应该明确告诉编译器。使用<input type="hidden" name="id" value="<? echo $row['0']; ?>">
即可满足您的要求。
答案 4 :(得分:-2)
你不能这样做。 你必须这样做
Void derived:: func()
{
this->func(); /*you should use 'this pointer' to
access the base class functions*/
cout<<"derived";
}