C 中的私有纯虚函数
在 C 中,遇到类似 Engine 类中的私有纯虚函数可能会令人费解。正如问题所暗示的,派生类应该提供这些函数的实现,但是它们如何访问基类的私有成员来做到这一点?
但是,问题在于一个误解:派生类确实可以覆盖私有纯虚函数。他们可能无法直接调用它们,但可以提供自己的实现。这允许“将接口规范与实现的可定制行为规范分开”。 (Herb Sutter,“虚拟性”)
在给定的示例中,公共接口由调用非公共、非重载虚拟函数的非虚拟重载函数组成。这种模式称为“公共重载非虚函数调用受保护的非重载虚函数”,解决了派生类中“隐藏”虚函数的问题。
考虑 SetStateBool 和 SetStateInt 是纯虚函数的假设情况基类中具有非虚拟接口。派生类需要保护特定重载不被新实现隐藏。为此,他们必须使用 using 声明。
但是,通过使用私有虚函数,派生类可以重写这些函数,而不必担心隐藏基类中的其他方法。这简化了在派生类中自定义虚函数行为的过程。
以上是派生类如何重写 C 中的私有纯虚函数?的详细内容。更多信息请关注PHP中文网其他相关文章!