示例:
迭代器是纯粹的抽象:任何行为都像一个 迭代器是一个迭代器。
这是什么意思?
答案 0 :(得分:27)
抽象类至少有一个纯虚函数。这是标准的C ++术语。
有些人使用术语纯抽象类来描述一个只有纯虚函数的类(换句话说,没有数据成员,没有具体的函数)。这相当于Java接口。
现在问你的实际问题:
迭代器是纯粹的抽象:任何行为类似于迭代器的东西都是迭代器。
这与抽象类(纯类或其他类)无关。所有它说的是,任何满足迭代器契约的东西都是迭代器。它甚至不必是一个类(想想指针)。
答案 1 :(得分:14)
无。 C ++标准仅声明a),如果一个类至少有一个纯虚函数,直接或继承,则该类是抽象的,并且b),您不能直接实例化抽象类。没有纯粹的抽象类。
答案 2 :(得分:5)
我认为纯抽象类是接口的C ++等价物。
请参阅here:
纯Abstract类只有抽象成员函数而没有数据 或具体成员职能。一般来说,纯粹的抽象类是 用于定义接口并且旨在继承 具体课程。这是强迫班级之间签订合同的一种方式 设计师和该类的用户。这个类的用户必须 声明要编译的类的匹配成员函数。
答案 3 :(得分:5)
抽象类是一个具有某些功能的类,但有些需要实现,而纯抽象类没有实现其功能。
这有点像其他语言的接口,例如C#和Java。
纯抽象类的目的是指定一个'合同'纯抽象类的结构必须坚持。
答案 4 :(得分:1)
抽象类 *至少有一个纯虚函数,可以有数据成员。
纯抽象类 就像 界面 。 此处只能定义纯虚函数。这里没有数据成员或方法定义。
有关详细信息,请访问:(https://en.wikibooks.org/wiki/C%2B%2B_Programming/Classes/Abstract_Classes/Pure_Abstract_Classes)
答案 5 :(得分:0)
在C ++中,没有纯粹的抽象类。只有抽象类和纯虚函数(函数标记为= 0)。具有至少一个纯虚函数的类变为抽象。但是纯虚函数可以实现。
答案 6 :(得分:0)
在您的示例中,您正在谈论 Iterators 。在C ++中,更具体地说,在标准库中,术语 Iterators 并不是指纯粹的抽象类,而是指所谓的 concepts 。概念与模板一起使用,而不是与基于虚拟/继承的多态性一起使用。目前(C ++ 11),概念仅在库文档中定义,即它们(尚未)作为C ++语言本身的一部分存在。标准库文档概念,例如" Iterator"概念,作为一组需求,用于任何类型/对象被接受为希望使用" Iterator"的模板的类型参数。根据哪些表达式对对象有效来定义一组需求,而不管其类型如何。它是鸭子打字的一种形式。例如,请参阅:http://en.cppreference.com/w/cpp/concept/Iterator