首页  >  文章  >  后端开发  >  派生类如何在基类中实现私有纯虚函数?

派生类如何在基类中实现私有纯虚函数?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 06:45:02152浏览

How Can Derived Classes Implement Private Pure Virtual Functions in a Base Class?

私有作用域内的纯虚函数

当在基类中遇到带有私有、纯虚函数的代码时,例如提供的示例中:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn