C++ 虚函数的相关问题
上一次用C++写多态还是在两年前,好多基本概念早已遗忘,根据相关博客需要把《深度探索C++对象模型》这本书在后几个月好好看一看;
虚函数针对于多态而提出的,目的是解决多态下的函数调用问题;
例如对于有继承顺序A->B;
如果有A a=new B();
其实a指向的是B类。对于如果B进行了虚函数的定义foo(),而A中也有相同的定义foo(),则如果使用a.foo(),则调用的是B中的foo();
这就是多态的基本形式,也是虚函数的主要用法之一;
对于多态的基本意义,相关的书上多以继承图的虚函数调用来说明其用处,但是对于多态的理解有一篇文章讲的比较好;
https://www.cnblogs.com/longlybits/articles/2386175.html
总而言之:
多态其实是在避免窥探和估计基类子类继承树而提出的;
例如后续如果新添子类,如果调用其函数还需要明白和了解该类的内部信息,继承链中的位置。而如果使用虚函数,则只需要将构建一个声明为基类,指向子类的指针,只要类中定义了虚函数,则直接可以调用,无关途中的继承树结构,这也是多态的很大用处之一;

浙公网安备 33010602011771号