c++面向对象高级编程 学习六 虚函数

虚函数:在成员函数前面加上virtual,函数就变成了虚函数

继承函数:子类可以调用父类的函数,叫做继承了函数,即函数的调用权

三种函数:
non-virtual 函数: 你不希望 derived class 重新定义 (override, 重写) 它.
virtual 函数: 你希望 derived class 重新定义 (override, 重写) 它 , 且你对它已有默认定义 。
pure virtual 函数: 你希望 derived class 一定要重新定义 (override 重写)它 , 你对它没有默认定义 。
纯虚函数:const=0

objectID()函数是non-virtual 函数,它可以生成ID号,不希望子类去重写,父类的定义已足够
error()函数,如果操作失败,比如可以打印一串错误的标识,其设置为虚函数,是因为若子函数有不同的想法不同的打印信息,可进行重写。重新定义后,子类调用时即是调用自己重写的函数。
draw()函数是纯虚函数,必须让子类重写定义。因为随着类的不同,draw的方式也不同,所以需要子类自己去重写。
c++面向对象高级编程 学习六 虚函数
通过子类的对象调用父类的函数
框架将可以写好的部分写好,将不能决定的部分写成虚函数,让子类自己去定义,子类再调用父类函数的时候,遇到自己定义的部分,会去执行自己定义的函数,如图中灰色线路径所示。

c++面向对象高级编程 学习六 虚函数
程序示例:
c++面向对象高级编程 学习六 虚函数