包含至少一个纯虚函数的类视为抽象类;
抽象类不能够实例化出对象,一般被当做基类使用(继承层次结构的较/最上层)。
纯虚函数的声明:virtual ReturnType Function()= 0;
纯虚函数仅仅提供了供其派生函数的一个同名函数,在抽象类中并没有其准确的定义;
关于虚函数的文章:【点我即达】
************************************************************************************************************************************
一:纯虚函数与抽象类
抽象类在C++中一般作为基类使用,
通过赋值(父子)兼容规则,基类指针可以存储派生类指针来使用派生类;
示例:
#include<iostream>
using namespace std;
const double PI = 3.1415926; //或者直接使用#define,二者原理基本一致
class Figure //抽象类
{
protected:
int x, y;
public:
void SetValue(int xx, int yy)
{
x = xx; y = yy;
}
virtual void display() = 0;//纯虚函数
//void display();//纯虚函数
};
class Square :public Figure
{
public:
void display() {
cout << "矩形面积:" << x*y << endl;
}
};
class Circle :public Figure
{
public:
void display() {
cout << "圆面积:" << PI*x*x << endl;
}
};
int main()
{
Figure *ptr[2]; //定义对象指针数组
Square s1;
Circle c1;
ptr[0] = &s1;
ptr[0]->SetValue(10, 5);
ptr[0]->display();
ptr[1] = &c1;
ptr[1]->SetValue(10);
ptr[1]->display();
return 0;
}
二:接口(≠抽象类)
c++中接口也是一种特殊的类,需要满足两个条件:
(1) 类中没有定义任何成员变量
(2) 类中所有成员函数都是公有且都是纯虚函数
然而,只要包含纯虚函数的类就可以称之为抽象类!