2

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

4

3 回答 3

3

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

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;
};
于 2013-01-03T17:43:49.880 回答
1

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

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

于 2013-01-03T17:44:52.497 回答
1

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

于 2013-01-03T17:45:32.277 回答