首页 > 其他 > 详细

纯虚函数和抽象类

时间:2018-02-01 12:18:53      阅读:195      评论:0      收藏:0      [点我收藏+]

1.纯虚函数是一个在基类中声明的虚函数,在基类中没有定义,它要个各个派生类都定义自己的版本;

2.纯虚函数为各个派生类提供一个公共界面(接口的封装和设计,软件的模块功能划分);

3.纯虚函数的形式: virtual 类型 函数名(参数列表) = 0;

4.一个具有纯虚函数的基类称为抽象类。

 

抽象类shape的用法说明:

1.shape x;   //error,抽象类不能定义对象

2.shape *p   //ok,可以声明抽象类的指针

3.shape fun()  //error,抽象类不能作为函数返回类型

4.void fun(shape)  //error,抽象类不能作为函数参数类型

5.shape& fun(shape&)  //ok,可以声明抽象类的引用

 

 

纯虚函数的例子:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 //抽象类,封装好函数的接口,为下面的派生类搭好框架,则用抽象类的指针(或引用)可以访问派生类的属性
 5 class Point
 6 {
 7 public:
 8     virtual float getArea()=0;
 9 private:
10 };
11 
12 //派生类
13 class Rectangle:public Point
14 {
15 public:
16     Rectangle(float len,float wid):length(len),width(wid){}
17     virtual float getArea(){return length*width;}
18 private:
19     float length;
20     float width;
21 };
22 
23 //派生类
24 class Circle:public Point
25 {
26 public:
27     Circle(float r):radiu(r){}
28     virtual float getArea(){return 3.1416*radiu*radiu;}
29 private:
30     float radiu;
31 };
32 
33 
34 int main()
35 {
36     Point* p=NULL; 
37     Rectangle rec(4,5);
38     Circle    cir(6);
39 
40     p=&rec;
41     cout<<p->getArea()<<endl;
42 
43     p=&cir;
44     cout<<p->getArea()<<endl;
45 
46     return 0;
47 }

 

纯虚函数和抽象类

原文:https://www.cnblogs.com/jswu-ustc/p/8398152.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!