我想用 C++ 编写一个“接口”类,它是一个纯虚拟抽象基类。
我可以在这个接口类中定义构造函数吗?构造函数不能是纯粹的虚函数,但是我怎样才能为接口类定义构造函数呢?
编辑:我需要在这样的接口类中使用虚拟析构函数吗?
实际上有两个问题合二为一:
构造函数不能是纯虚函数
TL/DR:如果您尝试向您的接口添加一个构造函数,那么它不再是一个接口,而是一个简单的抽象基类,完全可以拥有一个。
C++ 没有接口的概念。有具体类和抽象类,仅此而已。抽象类可以有构造函数、数据成员和其他一切。唯一需要标记类抽象的是单个纯虚成员函数。
有些人使用“接口”一词来表示没有任何数据成员或非纯虚拟成员函数的抽象类。其他人使用略有不同的定义。就语言而言,确切的定义没有任何意义。您可以拥有数据成员并定义一个构造函数,并且仍然将您的类称为接口,没有人会为此向您发出引用。或者您可以完全避免使用该术语。