抽象基类定义
回答
通过从C++标准(第10.4节,抽象类,重点煤矿)定义:
一种抽象类是可以只用作基类的一些其他的类类;除了作为从其派生的类的子对象之外,不能创建类的抽象对象 。一个类是抽象的,如果它有至少 一个纯虚函数。 [注意:这样的功能可能会被继承:见下文。 末端音符]
class point {/.../}; class shape { // abstract class point center; public: point where() { return center; } void move(point p) { center=p; draw(); } virtual void rotate(int) = 0; // pure virtual virtual void draw() = 0; // pure virtual };
在该示例中,shape
包含两个纯虚拟方法(这使得它一个抽象类),但也包含两个非虚拟方法。那没问题。所以你的原始定义是抽象类包含只有纯虚函数过于狭隘。至少有一个这样的就足够了。
谢谢你......我在某处阅读了这个定义,感到非常困惑。 – 2015-01-31 23:04:10
@KaushikReddy这里有一些像这样的定义:它们起源于更多关于编程的人,而不是自己做的事。对于抽象思维的学术来说,抽象类不是真正抽象的,除非没有非抽象的部分(我应该知道,我是一个学者...... ;-))但是如果你问到C++的定义,语言标准是规范性的。 – cmaster 2015-01-31 23:39:37
“包含至少一个纯虚拟方法”将是一个更好的定义。 – juanchopanza 2015-01-31 22:58:23
如果类至少包含一个纯虚拟方法,则该类是抽象的。它可以包含其他方法 - 纯虚拟,虚拟和/或非虚拟。 – 2015-01-31 22:58:49
只有纯虚拟类(没有其他方法或数据成员)的类通常称为接口。抽象类也是一个可以具有常规功能的接口。由于纯虚函数,两种类型都不能实例化。 – 2015-01-31 23:00:28