避免在c++的直接派生类中定义纯虚函数

Avoiding Defining a pure virtual function in c++ in immediate derived class?

本文关键字:定义 函数 派生 c++      更新时间:2023-10-16

必须在c++的直接派生类中强制定义纯虚函数吗?或者我们可以避免它,以便我们只能在具体类中定义它?这是如何实现的?

没有人强迫您实现纯virtual函数,所以您不必这样做。你的类只是抽象的。在派生类中,只需省略声明或将其重新声明为virtual pure。

struct Base
{
   virtual void foo() = 0;
};
//this is OK, X is abstract
struct X : Base
{
};
//this is also OK, redundant, and Y is abstract
struct Y : Base
{
   virtual void foo() = 0;
};

在开始创建该类的实际对象之前,绝对不需要在该类中定义任何纯虚函数。

抽象类是用来作为其他类的基类的。抽象类层次结构可以任意深,这意味着您不需要在直接子类中定义纯虚方法。

如果没有实现虚纯方法,则派生类是抽象的。如果要实例化该方法,必须在某些派生类中实现该方法。