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
并且对客户端代码隐藏起来.