C ++扩展了继承的函数

时间:2012-04-16 16:15:24

标签: c++

考虑一个简单的继承类:

class Base 
{
  void func() {
     cout << "base" << endl;
  }
};

class Derived : public Base
{
  void func() {
      cout << "derived" << endl;
  } 
};

如果我运行Derived :: func(),我得

derived

我想修改此代码以获取

base
derived

更类似于扩展而不是重写。

我已经能够获得与构造函数类似的东西,但是没有正常的函数。

非常感谢,  卢西奥

5 个答案:

答案 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";
  }