从派生类调用base方法

Max*_*rai 3 c++ class derived

例如,我有这样的课程:

class Base
{
   public: void SomeFunc() { std::cout << "la-la-la\n"; }
};
Run Code Online (Sandbox Code Playgroud)

我从中得到了一个新的:

class Child : public Base
{
   void SomeFunc()
   {
      // Call somehow code from base class
      std::cout << "Hello from child\n";
   }
};
Run Code Online (Sandbox Code Playgroud)

我希望看到:

la-la-la
Hello from child
Run Code Online (Sandbox Code Playgroud)

我可以从派生类调用方法吗?

Pét*_*rök 10

当然:

void SomeFunc()
{
  Base::SomeFunc();
  std::cout << "Hello from child\n";
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,因为Base::SomeFunc()没有声明virtual,Derived::SomeFunc() 隐藏它在基类而不是覆盖它,从长远来看肯定会导致一些令人讨厌的意外.所以你可能想把你的声明改成

public: virtual void SomeFunc() { ... }
Run Code Online (Sandbox Code Playgroud)

Derived::SomeFunc() virtual也会自动生成,但为了清楚起见,您可能更愿意明确声明.