美文网首页
多态和虚函数

多态和虚函数

作者: Felicia1993 | 来源:发表于2017-10-20 16:49 被阅读0次

多态可以分为静态多态和动态多态

静态多态:函数重载,泛型编程,编译器在编译期间内完成的,编译器根据函数实参的类型可推断出调用哪个函数

动态多态:虚函数实现并给于类继承来表现

动态多态的机制:

1.子类继承父类

2.类实现接口

动态绑定的条件:

1.必须是虚函数

2.通过基类类型的引用或者指针调用

总结:

1.派生类重写基类的虚函数实现多态,要求函数名、参数列表、返回值完全相同

2.基类中定义了虚函数,在派生类中该函数始终保持虚函数的特性

3.只有类的成员函数才能定义虚函数,静态成员函数不能定义虚函数

4.如果在类外定义虚函数,只能在声明函数时加上virtual关键字,定义时不用加

5.构造函数不能定义为虚函数,

6.不要在构造函数和析构函数中调用虚函数,在构造函数和析构函数中,对象是不完整的,可能会出现未定义的行为

7.最好将基类的析构函数声明为虚函数。

8.虚表是所有类对象实例共用的

易混淆的知识点

相关文章

  • 查漏补缺

    C++虚函数: 多态: 静态多态(重载)、动态多态(虚函数) 虚函数 虚函数表:编译器为每个类创建了一个虚函数表...

  • 多态与虚函数

    多态与虚函数 注意 在成员函数(静态成员、构造函数和析构函数除外)中调用同类的虚函数的语句是多态的。 在构造函数和...

  • 深刻剖析之c++博客文章

    三大特性 封装、继承、多态 多态 C++ 虚函数表解析C++多态的实现原理 介绍了类的多态(虚函数和动态/迟绑定)...

  • 多态和虚函数

    多态可以分为静态多态和动态多态 静态多态:函数重载,泛型编程,编译器在编译期间内完成的,编译器根据函数实参的类型可...

  • 虚函数和多态

    虚函数 在类的定义中,前面有virtual关键字的成员函数就是虚函数。virtual关键字只用在类定义里的函数声明...

  • C++虚函数注意事项以及构成多态的条件

    C++ 虚函数对于多态具有决定性的作用,有虚函数才能构成多态。 虚函数注意事项 只需要在虚函数的声明处加上 vir...

  • C++第六篇多态

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

  • 2020-07-06----《C++类的学习》

    函数重载:同名不同参。 C++类的特点:封装、继承、多态。 //多态与函数重载是啥关系? 虚函数:和软件架构相关 ...

  • 十七、多态(二)

    1. 多态的实现原理 1.1虚函数表和vptr指针 当类中声明虚函数时,编译器会在类中生成一个虚函数表; 虚函数表...

  • C语言模拟实现多态

    C++的多态分为编译时多态的函数重载和运行时的虚函数. 一个基类类型的指针可以指向派生类的对象, 调用虚函数的时候...

网友评论

      本文标题:多态和虚函数

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