我(希望)已经理解了私人虚拟功能的目的,但我还没有理解为什么我应该有一个私人的纯粹的虚拟功能! 我的意思是,我必须在所有派生类中定义这个函数,但这样所有对这个虚拟纯的调用将是对派生类中定义的调用的调用。私人纯虚拟功能的目的是什么?
假设我们有:
class Base{
public:
void foo(){ bar(); }
private:
virtual void bar() =0 {/*something*/}
};
派生类基地必须定义栏(或有它的纯虚拟的,但忘了这一个时刻)。 因为Base :: bar是私有的,所以它不能被派生类使用。 由于Base是抽象的,我不能创建Base对象,因此我只能在派生类上调用foo,但这意味着Base :: bar永远不会被调用! 当然,我可以定义富:
void Base::foo(){
bar();
Base::bar();
}
但是为什么?用bar的主体定义一个非虚拟的私有函数会更好(并用它替换Base :: bar),并使纯虚拟的主体为空?
如果是这样,为什么我应该有酒吧私人(而不是保护)?我试图找到一个在互联网上的解决方案,我知道有像职位 - >C++: Private virtual functions vs. pure virtual functions,但他们帮助理解私人虚拟功能,而不是私人PURE虚拟功能。如果我错了,请原谅我!
'virtual void bar()= 0 {/ * something * /}'? – ChiefTwoPencils 2014-09-01 00:03:02
您不必为纯虚函数提供定义,如果这就是您要求的。 – 2014-09-01 00:08:05
@ T.C。我认为你删除了我正在回应的评论。 – 2014-09-01 01:15:03