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