多态的背后
Posted buddho
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态的背后相关的知识,希望对你有一定的参考价值。
#include <stdio.h> class A{ public: A(){f();} virtual void f(){printf("in class A ");} }; class B:public A{ public: void f(){printf("in class B ");} }; B b;
调用的结果是什么?
你需要知道的是:
1、b.f()在C++里会转换成B::f(&b),
2、B b的过程是什么?
B先调用A的构造,A的构造先设置好的vptr = A::vtable
随后,B的构造再把A::vtable里面的有自己实现的项覆盖掉。
所以,这里还没有覆盖,f(&b)这时候,vtable里指向的是A::f(),于是。。
以上是关于多态的背后的主要内容,如果未能解决你的问题,请参考以下文章