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

第十五章 多态性和虚函数

作者: 意不适 | 来源:发表于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 虚析构函数

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

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

相关文章

  • C++第六篇多态

    C++中的多态性分为编译时多态性和运行时多态性,编译时多态通过函数重载和模板体现,运行多态通过虚函数体现编译、连接...

  • 第十五章 多态性和虚函数

    被virtual关键字修饰的成员函数就是虚函数。虚函数的作用是实现多态性。所谓多态性就是以共同的方法,对不同的对象...

  • GeekBand-C++面向对象高级编程(下)-Week2

    对象模型:虚函数表(vtbl)与虚表指针(vptr) 我们知道,C++中,可以通过虚函数来实现多态性,而虚函数是通...

  • 虚函数与纯虚函数

    虚函数:被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polym...

  • 第五章多态性

    第5章 多态性 一、编译时的多态性和运行时的多态性 多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的...

  • C++虚函数

    C++虚函数 C++虚函数是多态性实现的重要方式,当某个虚函数通过指针或者引用调用时,编译器产生的代码直到运行时才...

  • 多态,虚函数,纯虚函数,虚函数表

    多态性:一个接口,多种方法.程序在运行时才确定调用的函数,是 oop 的核心概念. 多态性通过虚函数来实现,子类可...

  • C++ 多态性和虚函数

    多态性(polymorphism)提供了接口和具体实现之间的另一层间隔。多态性改变了代码的组织性和可读性,同时也使...

  • 面试题目收集总结

    C++: 多态: 多态性都有哪些?(静态和动态,然后分别叙述了一下虚函数和函数重载) c语言和c++有什么区别?(...

  • 虚函数与多态性

    这是知乎上c++虚函数的作用https://www.zhihu.com/question/23971699CSDN...

网友评论

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

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