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

总而言之:

多态其实是在避免窥探和估计基类子类继承树而提出的;

例如后续如果新添子类,如果调用其函数还需要明白和了解该类的内部信息,继承链中的位置。而如果使用虚函数,则只需要将构建一个声明为基类,指向子类的指针,只要类中定义了虚函数,则直接可以调用,无关途中的继承树结构,这也是多态的很大用处之一;

posted @ 2020-11-27 15:46  暮云林凌  阅读(88)  评论(0)    收藏  举报