纯虚函数和抽象类

Posted 8号prince

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了纯虚函数和抽象类相关的知识,希望对你有一定的参考价值。

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 }

 

以上是关于纯虚函数和抽象类的主要内容,如果未能解决你的问题,请参考以下文章

C++纯虚函数和抽象类

多态—— 纯虚函数和抽象类

纯虚函数和抽象类

c++纯虚函数和抽象类

54)纯虚函数和抽象类

C++学习笔记11--纯虚函数和抽象类