美文网首页
第十五章 多态性和虚函数

第十五章 多态性和虚函数

作者: 意不适 | 来源:发表于2017-03-28 08:18 被阅读0次

    被virtual关键字修饰的成员函数就是虚函数。虚函数的作用是实现多态性。所谓多态性就是以共同的方法,对不同的对象采取不同的策略(一个接口,多种方式)。

    虚函数只能是类中的成员函数,而且不能是静态的。

    15.1 C++程序员的演变

    如果不用虚函数,就等于还不懂得面向对象程序设计。

    15.2 向上类型转换

    Instrument & Wind

    15.3 问题

    捆绑:函数体与函数调用相联系成为捆绑。

    当捆绑在程序运行之前(由编译和连接器)完成时,称为早捆绑(early binding);

    捆绑根据对象的类型,发生在运行时,称为晚捆绑或动态捆绑。

    15.4 虚函数

    虚函数实现动态的条件:
    1. 类之间的继承关系满足赋值兼容性规则;
    2. 改写了同名的虚函数;
    3. 根据赋值兼容性规则使用指针(或引用)。

    15.5 C++如何实现晚捆绑

    为每个类设置VTABLE,初始化VPTR,为虚函数调用插入代码。

    15.7 抽象基类和纯虚函数

    纯虚函数使用关键字virtual,并在其后机上=0。

    纯虚函数没有函数体,其作用是:在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义。

    包含有纯虚函数的类称为抽象类,抽象类只能作为基类,所以又称抽象基类。

    抽象类不能定义对象。

    抽象类至少含有一个虚函数,而且虚函数中至少有一个纯虚函数。

    15.11 虚析构函数

    如果将基类的析构函数声明为虚函数,由该基类派生出的所有派生类的析构函数也都自动成为虚函数,即是派生类的析构函数与基类的析构函数名字不相同。

    构造函数不能为虚函数,但是析构函数能够且常常必须是虚函数。

    相关文章

      网友评论

          本文标题:第十五章 多态性和虚函数

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