C++学习基础十二——纯虚函数与抽象类
2016-09-27 23:19
218 查看
一、C++中纯虚函数与抽象类:
1、含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数。
2、如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类。
3、如果一个类中含有虚函数,则必须将该类的析构函数声明为虚函数。
4、虚函数与纯虚函数的声明:
virtual void draw();//虚函数
virtual void draw() = 0;//纯虚函数
5、C++中支持两种多态性:
编译时多态:通过重载函数实现。
运行时多态:通过虚函数实现。
二、Java抽象函数与抽象类:
1、含有抽象方法的类成为抽象类,但抽象类不一定含有抽象方法。抽象类不能创建实例。
2、抽象方法必须使用abstract关键字修饰。
3、如果非抽象子类继承抽象类,则必须重写父类中所有的抽象方法。
三、C++接口:一个类中除了构造函数和析构函数外,只有纯虚函数,则该类成为接口 。
四、代码实现:
后续更新中....
1、含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数。
2、如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类。
3、如果一个类中含有虚函数,则必须将该类的析构函数声明为虚函数。
4、虚函数与纯虚函数的声明:
virtual void draw();//虚函数
virtual void draw() = 0;//纯虚函数
5、C++中支持两种多态性:
编译时多态:通过重载函数实现。
运行时多态:通过虚函数实现。
二、Java抽象函数与抽象类:
1、含有抽象方法的类成为抽象类,但抽象类不一定含有抽象方法。抽象类不能创建实例。
2、抽象方法必须使用abstract关键字修饰。
3、如果非抽象子类继承抽象类,则必须重写父类中所有的抽象方法。
三、C++接口:一个类中除了构造函数和析构函数外,只有纯虚函数,则该类成为接口 。
四、代码实现:
#include <iostream> using namespace std; //含有一个或多个纯虚函数的类成为抽象类,注意:此处指的是纯虚函数而不是虚函数 //纯虚函数的定义:virtual void draw() = 0; //如果继承抽象类,则必须实现父类中所有的纯虚函数,否则该子类也为抽象类 //如果一个类中包含虚函数,则必须将本类的析构函数声明为虚函数。 class Shape { public: Shape(){ } virtual ~Shape(){ } virtual double getArea() = 0;//纯虚函数 virtual double getP() = 0; virtual void draw() = 0; }; class Circle : public Shape { public: Circle(double r):itsRadius(r){ } virtual ~Circle(){ } double getArea(){ return 3.14 * itsRadius * itsRadius; } double getP(){ return 2 * 3.14 * itsRadius; } void draw(){ cout<<"draw Circle..."<<endl; } private: double itsRadius; } ; class Rectangle : public Shape { public: Rectangle(int w,int h):wid(w),hei(h){ } virtual ~Rectangle(){ } double getArea() { return wid * hei; } double getP() { return 2*(wid + hei); } void draw() { for(int i = 0;i < 5;i++) { for(int j = 0;j < 4;j++) { cout<<"X "; } cout<<endl; } } private: int wid; int hei; }; int main() { int number; bool flag = false; Shape *shape; while(flag == false) { cout<<"请输入数字:(1)圆形 (2)矩形 (0)退出:"; cin>>number; switch(number) { case 1: shape = new Circle(10.0); break; case 2: shape = new Rectangle(13,15); break; case 0: flag = true; break; } if(flag == false) { shape->draw(); delete shape; } } return 0; }
后续更新中....
相关文章推荐
- C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- c++中抽象类、虚函数和纯虚函数的学习
- C++基础:纯虚函数和抽象类
- c++中抽象类、虚函数和纯虚函数的学习以及和Java的对比
- C++基础:纯虚函数和抽象类
- C++入门学习:纯虚函数、抽象类和模拟接口
- C++基础7【难】 多态:实现原理 vptr指针 证明vptr存在 类的步长 纯虚函数:抽象类 案例 【面试题】
- C++基础:纯虚函数和抽象类
- C++学习之路—多态性与虚函数(二)纯虚函数与抽象类
- C++语言基础(13)-抽象类和纯虚函数
- C++学习笔记--抽象类-纯虚函数
- C++学习日记2——多态篇的纯虚函数和抽象类
- C++学习笔记:纯虚函数和抽象类
- c++基础10:继承和派生 虚函数的作用 多态性概念 纯虚函数和抽象类的概念
- C++基础:纯虚函数和抽象类
- C++基础:纯虚函数和抽象类
- [C++基础]纯虚函数和抽象类
- VC、C++基础学习