我们是否必须在直接派生类中强制定义c ++中的纯虚函数?或者我们可以避免它,以便我们只能在具体的类中定义它?这是如何实现的?
答案 0 :(得分:4)
没有人强迫您实现纯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;
};
答案 1 :(得分:1)
在开始创建该类的实际对象之前,绝对不需要在类中定义任何纯虚函数。
抽象类旨在作为其他类的基础。抽象类层次结构可以任意深入,这意味着您不需要在直接后代中定义纯虚方法。
答案 2 :(得分:1)
如果没有实现某些虚拟纯方法,则派生类是抽象的。如果要实例化它,必须在某个派生类中实现该方法。