这是师兄昨天问我的问题,今天居然在????指offer上看到了,可想而知这本书有多重要。
如上图:为了使用这种类型的实例,他必须占用一定的空间,至于占多少空间,由编译器决定。
如上图:那为什么添加了构造函数和析构函数,结果还是1呢?
因为调用构造函数和析构函数只需知道函数的地址,而函数的地址只与类型相关,而与类型的实例无关。
如上图:添加上虚函数后,结果变成了8个字节。
C++编译器发现这是虚函数,就会为该类型生成虚函数表,,每个实例中添加一个指向虚函数的指针,而指针的大小根据系统而定,在32位的机器上是4字节,64位是8字节。