C++中的纯虚函数和抽象类
纯虚函数
纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本
纯虚函数为个派生类提供一个公共界面(接口的封装和设计、软件的模块功能划分)
纯虚函数声明语法:
virtual 类型 函数名(参数表) = 0;
#include <iostream> using namespace std; class Figure { public: virtual void getArea() = 0; }; class Circle: public Figure { private: double r; public: Circle(int r1):r(r1){} virtual void getArea() { cout<<"圆形面积:"<<3.14 * r * r<<endl; } }; class Square: public Figure { private: double edge; public: Square(int e):edge(e){} virtual void getArea() { cout<<"正方形面积:"<<edge * edge<<endl; } }; void getArea(Figure *base) { base->getArea(); } int main() { Circle c(10); Square s(10); getArea(&c); getArea(&s); return 0; }
注意:
1,含有纯虚函数的类,称为抽象基类,不可实例化。 即不能创建对象,存在的意义就是被继承,提供族类的公共接口。
2,纯虚函数只有声明,没有实现,被“初始化”为 0。
3,如果一个类中声明了纯虚函数,而在派生类中没有对该函数定义,则该虚函数在派生类中仍然为纯虚函数,派生类仍然为纯虚基类。
抽象类
一个具有纯虚函数的基类称为抽象类
绝大多数面向对象语言都不支持多继承,绝大多数面向对象语言都支持接
口的概念
C++中没有接口的概念,C++中可以使用纯虚函数实现接口
接口类中只有函数原型定义,没有任何数据的定义.