码迷,mamicode.com
首页 > 其他好文 > 详细

纯虚函数和抽象类

时间:2018-02-01 13:20:51      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:封装   main   ror   private   类型   虚函数   函数名   自己的   引用   

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 }

 

纯虚函数和抽象类

标签:封装   main   ror   private   类型   虚函数   函数名   自己的   引用   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!