C++虚函数定义、作用、使用注意点

虚函数主要作用就为了,通过基类指针访问派生类定义的函数。通过继承和虚函数实现面向对象的多态性

虚函数语法定义:

用关键字virtural,在成员函数前加virtural就可以,代表此函数为虚函数。

虚函数的实际作用:

虚函数作用记住这点:用基类指针可以控制派生类函数。

写个实际例子来说明。

比如圆形、方形、线等,它们都有draw这个函数,都是从BaseGraphics类继承而来,现在要调用它们的draw函数。我写两个版本一个是虚函数,一个是普通的调用,大家看过后应该理解会更深刻。

调用输出结果:

可以看出以上代码用虚函数和不用虚函数都可以实现,哪样虚函数有什么用??估计好多人会问??

1.BaseGraphics基类设计成虚类可以让后面继承的类有多态的可能,可以实现自己的draw函数

2.更好的分离代码,比如在设计时就可以先写好调用draw()函数,而不用考虑实际调用哪个类的draw(),这个就是动态绑定。

大家还可能在上面代码中看到了析构函数也都定义成了虚函数,这是为什么?注意点

如果基类析构函数不定义成虚函数,析构时将无法调用派生类的析构函数

如果还不明白,大家也可以做下测试,将代码复制后,将基类析构函数去掉virtual运行下就会发现问题,也就是上面讲的哪句话的意思。