C++中抽象类和纯抽象类有什么区别?

Mil*_*avi 12 c++ oop abstract-class abstraction

例:

迭代器是纯粹的抽象:任何行为类似于迭代器的东西都是迭代器.

这是什么意思?

NPE*_*NPE 29

一个抽象类具有至少一个纯虚函数.这是标准的C++术语.

有些人使用术语纯抽象类来描述一个只有纯虚函数的类(换句话说,没有数据成员,没有具体的函数).这相当于Java接口.

现在问你的实际问题:

迭代器是纯粹的抽象:任何行为类似于迭代器的东西都是迭代器.

这与抽象类(纯类或其他类)无关.所有它说的是,任何满足迭代器契约的东西都是迭代器.它甚至不必是一个类(想想指针).


Pup*_*ppy 14

没有.C++标准仅声明a),如果一个类至少有一个纯虚函数,直接或继承,则该类是抽象的,并且b),您不能直接实例化抽象类.没有纯粹的抽象类这样的东西.

  • 这可能是正式情况,但它肯定是一个常用的术语. (8认同)

Vla*_*lad 5

我认为纯抽象类是接口的C++等价物.

看到这里:

纯Abstract类只有抽象成员函数,没有数据或具体成员函数.通常,纯抽象类用于定义接口,并且旨在由具体类继承.这是强制类设计者和该类用户之间签订合同的一种方式.此类的用户必须为要编译的类声明匹配的成员函数.


Pau*_*ies 5

抽象类是一个具有某些功能的类,但有些需要实现,而纯抽象类没有实现其功能.

这有点像其他语言的接口,如C#和Java.

纯抽象类的目的是指定纯抽象类的结构必须遵守的"契约".