是什么使某物成为C ++中的抽象类[重复]
||
这个问题已经在这里有了答案:
没有找到相关结果
已邀请:
3 个回复
骨乏唯瓜
关键字或同等的关键字,因此,使类抽象的常用习惯是在其中声明一个纯虚函数(防止实例化)。* 出于同样的原因,在C ++中,接口和抽象类之间没有太大区别-C ++接口只是一个仅包含纯虚函数的类。 *更新:防止类实例化的另一种方法是声明其构造函数
或
。后者意味着它也不能被子类化,但是前者也不能防止子类化,因此从理论上讲,受保护的构造函数也可能是抽象类的标志,是强制子类化的一种方式。但是,我在实践中从未见过。我相信这是因为抽象类被设计为可扩展的,在实践中几乎总是意味着它具有虚函数。我们之所以希望它是抽象的,是因为尚不知道其实现的某些部分,因此必须在其子类中对其进行定义。这正是纯虚函数的含义。
穗揣
请注意,A还应该有一个(可能不是纯粹的)虚拟析构函数。 也可以实现纯虚函数,但这很少见:
该函数必须在类之外定义:
但是该类仍然是抽象的。
艰管垮淮