1.定义

 在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数 

 实现多态性,通过指向派生类的基类指针或者引用,访问派生类中同名覆盖成员函数。

多态理解:

  父类指针指向子类的实例,用父类的指针调用子类的成员函数。

        使得父类的指针有多种形态,泛型技术 比如 :模板 虚函数

   用不变的代码实现可变的算法 在编译时/运行时决定

 

2.纯虚函数

PS:虚函数&纯虚函数区别

定义虚函数是为了允许用基类的指针调用子类函数

PS:虚函数的“虚”

虚,体现在“动态联编”“推迟联编”,类函数的调用并不是在编译时刻,而是在运行时刻确定的。编写代码的时候并不能确定被调用的是基类的还是派生类的函数,称为虚函数

定义纯虚函数,代表函数没有被实现,为了实现一个接口,起到规范作用,规范继承这个类的程序员必须实现这个函数。

PS:纯虚函数定义

在基类中声明的虚函数,基类中无定义,但派生类要定义自己的实现方法。在函数原型后加=0;

virtual void function1() = 0;

PS:  纯虚函数作用

有些类别不适合生成对象,但其派生类适合 动物 猫科 犬科。编译器在派生类中必须重写实现多态性,含有纯虚函数的类 抽象类

3.特殊概念C++中没出现

接口

抽象类:只能被继承不能被实现

C++通过纯虚函数实现抽象类

类中只有纯虚函数是接口,所以接口是一种特殊的抽象类

2.应用

3.联系

虚函数

纯~

多态

动态绑定 静态~

多态性 将接口与实现分离

接口

友元类

virtual 与析构函数关系

virtual 基类 派生类都需要有吗

实现原理 虚函数表

link:

https://www.liaoxuefeng.com/wiki/1252599548343744/1260456371027744

https://www.runoob.com/w3cnote/cpp-virtual-functions.html

 

 

posted on 2020-11-30 16:15  黑暗尽头的超音速炬火  阅读(138)  评论(0编辑  收藏  举报