c++中, 纯虚函数基于多态。
1. 纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本。
2. 纯虚函数为各派生类提供一个公共界面。
3. 一个具有纯函数的基类称为抽象类。
下面是一个面向抽象类编程的简单实例。
#include<iostream>
using namespace std;
class Figure {
public:
virtual void getArea() = 0; //纯虚函数
};
class Circle : public Figure {
public:
Circle(int a) {
this->a = a;
}
// 继承从父类Figure中的纯虚函数 getArea
virtual void getArea(){
cout << "圆的面积是: " << 3.14 * a * a << endl;
}
private:
int a;
};
class Tri :public Figure {
public:
Tri(int a, int b) {
this->a = a;
this->b = b;
}
virtual void getArea() {
cout << "三角形的面积为: " << a * b / 2 << endl;
}
private:
int a;
int b;
};
void playobj(Figure* base) {
base->getArea();
}
int main() {
Figure *f = NULL;
Circle c1(1);
Tri t1(1, 2);
playobj(&c1);
playobj(&t1);
system("pause");
}
上面的实例很简单,但是却表达了面向抽象类编程的重要思想。
面向抽象类编程最重要点在于,我能够在父类中定义若干要实现业务的纯虚函数(接口), 然后让继承的子类去实现这些接口的业务逻辑,并且基于多态思想,我可以利用父类指针去实现任何子类的业务逻辑。
这样做的好处就是: 作为父类,也就是业务提出者,完全就可以提出相应的业务需求,而不用去关心这些业务逻辑究竟是怎么实现。业务逻辑的实现由继承的子类去实现。这样就实现了父类与子类的解耦合。。。