美文网首页C/C++学习笔记
4.0 C++远征:纯虚函数与抽象类

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

作者: 青_阳 | 来源:发表于2016-11-18 18:33 被阅读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)抽象基类是本类族的公共接口。例如可通过抽象基类的指针访问到任何子类的虚函数,并对这些函数下达同一命令,从而实现多态性。

    相关文章

      网友评论

        本文标题:4.0 C++远征:纯虚函数与抽象类

        本文链接:https://www.haomeiwen.com/subject/ryqspttx.html