标签:class 实现 void 构造 vtable ++ pre amp color
#include <stdio.h> class A{ public: A(){f();} virtual void f(){printf("in class A\n");} }; class B:public A{ public: void f(){printf("in class B\n");} }; 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(),于是。。
标签:class 实现 void 构造 vtable ++ pre amp color
原文地址:https://www.cnblogs.com/buddho/p/11869073.html