14

例子:

迭代器是纯粹的抽象:任何表现得像迭代器的东西都是迭代器。

这是什么意思?

4

7 回答 7

30

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

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

现在到你的实际问题:

迭代器是纯粹的抽象:任何表现得像迭代器的东西都是迭代器。

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

于 2013-03-06T17:11:29.557 回答
14

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

于 2013-03-06T17:12:17.350 回答
5

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

这里

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

于 2013-03-06T17:12:09.887 回答
5

抽象类是具有某些功能但需要实现一些功能的类,而纯​​抽象类没有实现任何功能。

这有点像 C# 和 Java 等其他语言中的接口。

纯抽象类的目的是指定纯抽象类的实体必须遵守的“契约”。

于 2013-03-06T17:12:56.230 回答
2

抽象类*至少有一个纯虚函数,并且可以有数据成员。

纯抽象类 就像一个 接口这里只能定义纯虚函数。此处不能进行数据成员或方法定义。

欲了解更多信息,请访问:(https://en.wikibooks.org/wiki/C%2B%2B_Programming/Classes/Abstract_Classes/Pure_Abstract_Classes

于 2013-03-06T17:47:07.907 回答
0

在 C++ 中没有纯抽象类。只有抽象类和纯虚函数(函数已用= 0标记)。具有至少一个纯虚函数的类变得抽象。但是纯虚函数可以有实现。

于 2013-03-06T17:17:42.847 回答
0

在您的示例中,您正在谈论Iterators。在 C++ 中,更具体地说,在标准库中,术语迭代器不是指纯粹的抽象类,而是指所谓的概念。概念与模板一起使用,而不是与基于虚拟/继承的多态性一起使用。目前(C++11),概念仅在库文档中定义,即它们(尚未)作为 C++ 语言本身的一部分存在。标准库文档概念,例如“迭代器”概念,作为一组需求任何类型/对象都被接受为想要使用“迭代器”的模板的类型参数。一组要求是根据哪些表达式对对象有效而定义的,无论其类型如何。这是鸭子打字的一种形式。例如,请参阅:http ://en.cppreference.com/w/cpp/concept/Iterator

于 2014-05-16T22:25:13.060 回答