赞
踩
同样的一份代码在VS 2019和Dev C++上跑起来的结果并不很相似,最大的区别就是vs中类大小为20字节,而dev中类大小为16字节,我猜想这是编译器优化的原因。
从如下代码及运行结果来看,虽然细节上有一些出入,但是可以看出,在windows环境下,虚表存放的地址与全局变量、静态变量存储的位置很接近,换句话说,虚表就是存储在程序的数据段中。此外可以看出,即使一个类声明了多个对象,但是他们的虚表指针指向的地址都是一样的,也就是说,同一个类只会有一张虚表
Dev C++
#include<iostream> using namespace std; class testA { int a = 33; virtual void func1() { cout << "fun1:a=" << a << endl; } }; class testB :public testA { int b = 66; virtual void func1() { cout << "fun1:b=" << b << endl; } }; int quanjv = 32; int main() { static int tmp = 21; testA t1; testB t2,t3; testA* p1 = &t1; testB* p2 = &t2; testB* p3 = &t3; cout << "对象p1地址为:" << p1 << endl; cout
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。