C/C++学习笔记

4.0 C++远征:纯虚函数与抽象类

2016-11-18  本文已影响12人  青_阳

3-1纯虚函数抽象类

[TOC]

一、纯虚函数

1.纯虚函数的定义

纯虚函数,没有函数体,同时定义时在函数名后要加上“=0”。

class Shape {
  public:
    virtual double calcArea() { // 虚函数
      return 0.00;
    }
    virtual double calcPerimeter() = 0; // 纯虚函数     
}

2.纯虚函数的实现原理

虚函数表指针指向一份虚函数表。

如果定义的是虚函数,在虚函数表中,此函数指针的值存的是虚函数的首地址。

如果定义的是纯虚函数,在虚函数表中,此函数指针的值存的是0。

二、抽象类

1.抽象类

含有纯虚函数的类叫做抽象类。

2.抽象类的用法

​ (1)抽象类无法实例化对象。(无论在堆中还是栈中。)

​ (2)因为纯虚函数无法被调用。

​ (3)当类的用途很明确时,才在派生类中具体去实现基类中定义的纯虚函数。这样在派生类中才能使用。

​ (4)若是派生类并没有对基类中的纯虚函数进行实现,则该派生类仍然是抽象基类。

​ (5)只有将抽象类中所有纯虚函数都做了实现,派生类才可以去实例化对象。

​ (6)抽象基类是本类族的公共接口。例如可通过抽象基类的指针访问到任何子类的虚函数,并对这些函数下达同一命令,从而实现多态性。

上一篇下一篇

猜你喜欢

热点阅读