纯虚函数:实现和目的
在 C 中,纯虚函数通常与声明方法的接口而不提供其实现相关联。但是,可以有一个带有实现的纯虚函数,如下所示:
class A { public: virtual void f() = 0; }; void A::f() { cout << "Test" << endl; }
虽然此代码在语法上是有效的,但其目的和用法需要进一步解释。
提供纯虚函数实现的目的:
基类可以定义纯虚函数的实现函数,即使派生类需要提供它们自己的实现。此实现的目的可以是:
如何调用基类实现:
派生类可以使用全作用域调用纯虚函数的基类实现名称:
class B : public A { virtual void f() { // class B doesn't have anything special to do for f() // so we'll call A's // note that A's declaration of f() would have to be public // or protected to avoid a compile time problem A::f(); } };
用例:
考虑一个方法有合理的默认行为的场景。然而,类设计者希望仅显式调用此默认行为。在基类中提供纯虚函数的实现允许派生类根据需要访问和使用此默认行为。
注意:
虽然技术上可以提供纯虚函数的实现,这是一种不常见的做法,并且可能会导致混乱。因此,除非有明确且正当的理由,否则一般建议避免这样做。
以上是C 中的纯虚拟函数可以实现吗?为什么要这样做?的详细内容。更多信息请关注PHP中文网其他相关文章!