C++:私有虚函数与纯虚函数

mad*_*adu 6 c++ virtual private function

可能重复:
C++中的私有虚方法

如果我从这篇文章中正确理解(C++中的私有虚方法),在基类中创建虚函数会使派生类能够覆盖它.但似乎事情停在那里.

但是,如果基类虚函数是纯函数,则强制派生类实现该函数.因此,纯(公共)虚拟功能仅仅是一个接口.我可以在这看到一个好处.

另一方面,通过将基类虚函数设为私有,只允许派生类重写函数,但我认为没有任何好处.这就好像私有虚拟功能甚至不存在.派生类显然不知道基类中是否存在该虚函数,因为它是私有的,因此在继承或多态方面,声明基类私有函数virtual有什么好处吗?

此外,是否存在基类将声明函数"纯虚拟"和"私有"的情况?

谢谢.

jua*_*nza 12

一个好处是实现模板方法模式:

class Base {

 public :
  void doSomething() {
    doSomething1();
    doSomething2();
    doSomething3();
  }
 private:
   virtual void doSomething1()=0;
   virtual void doSomething2()=0;
   virtual void doSomething3()=0;
};


class Derived : public Base {
  private:
   virtual void doSomething1() { ... }
   virtual void doSomething2() { .... }
   virtual void doSomething3() { .... }
}
Run Code Online (Sandbox Code Playgroud)

这允许派生类实现某个逻辑的每个部分,而基类确定如何将这些部分放在一起.由于这些部分本身没有意义,因此它们被声明private并且对客户端代码隐藏起来.