类的大小——sizeof 的研究(2.虚函数继承)
2009-05-12 18:59
225 查看
上一篇文章研究了关于类大小的4条规则后,我们再结合虚函数表,来研究下类的大小。
在Base类里添加了virtual int get_num()函数,而子类也重新实现了virtual int get_num()函数。
但是结果依然是
12
24
说明子类只是共用父类的虚函数表,因此一旦父类里有虚函数,子类的虚函数将不计入sizeof大小。
这可以认为是一个补充规则。
class Base { public: Base(){}; virtual ~Base(){}; void set_num(int num) { a=num; } virtual int get_num() { return a; } private: int a; char *p; }; class Derive:public Base { public: Derive():Base(){}; ~Derive(){}; virtual int get_num() { return d; } private: static int st; int d; char *p; char c; }; int main() { cout<<sizeof(Base)<<endl; cout<<sizeof(Derive)<<endl; return 0; }
在Base类里添加了virtual int get_num()函数,而子类也重新实现了virtual int get_num()函数。
但是结果依然是
12
24
说明子类只是共用父类的虚函数表,因此一旦父类里有虚函数,子类的虚函数将不计入sizeof大小。
这可以认为是一个补充规则。
相关文章推荐
- 类的大小——sizeof 的研究(3.虚继承)
- 类大小——sizeof 研究(虚继承)
- 类的大小——sizeof 的研究(3.虚继承)
- 空类、含静态成员的类、普通类(不含虚函数、虚继承)的sizeof大小
- 虚函数列表: 取出方法 // 虚函数工作原理和(虚)继承类的内存占用大小计算 32位机器上 sizeof(void *) // 4byte
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- 类的大小——sizeof 的研究(1)
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- C/C++ sizeof函数解析——解决sizeof求结构体大小的问题
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- C++虚继承与其他继承类的sizeof()大小详解
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- C++进阶—>各类型占大小及sizeof函数
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- 数组作为函数的参数时,不能通过sizeof运算符得到该数组的大小