私有作用域内的纯虚函数
当在基类中遇到带有私有、纯虚函数的代码时,例如提供的示例中:
class Engine { public: void SetState( int var, bool val ); void SetState( int var, int val ); private: virtual void SetStateBool( int var, bool val ) = 0; virtual void SetStateInt ( int var, int val ) = 0; };
派生类似乎无法访问这些函数来实现它们。然而,派生类可以重写私有虚函数,提供它们自己的实现。这不要与派生类方法无法从基类调用虚函数相混淆。
接口和实现的分离
私有虚函数允许接口规范与可在派生类中自定义的实现分离。公共接口由一组重载的非虚函数组成,这些函数调用私有的、非重载的虚函数。这个习惯用法被称为“公共重载非虚拟调用受保护的非重载虚拟”,有助于管理隐藏规则。
防止隐藏
在以下场景中公共接口不是虚拟的,虚拟实现是私有的,派生类的作者可以简单地提供自己的虚拟函数的实现,而不必担心隐藏基类的成员。例如:
class MyTurbochargedV8 : public Engine { private: void SetStateInt(int var, int val ) {/* new implementation */} };
以上是派生类如何在基类中实现私有纯虚函数?的详细内容。更多信息请关注PHP中文网其他相关文章!