【c++】虚函数对对象大小的影响
2014-09-08 18:07
260 查看
如果不是虚继承:
成员+父类大小
不考虑子类虚函数和指向父类的指针
如果是虚函数:
父类大小+成员+指向父类的指针+新的虚函数表指针(如果有新的虚函数)
成员+父类大小
不考虑子类虚函数和指向父类的指针
如果是虚函数:
父类大小+成员+指向父类的指针+新的虚函数表指针(如果有新的虚函数)
#include "stdafx.h" #include<iostream> using namespace std; class Base{ //4 public: virtual void fun1(){} }; class Derived1: public Base// 4+4 8 { public: char a[3]; }; class Derived2: public Base//父类4+char a[3] 4 8 { public: virtual void fun2(){} char a[3]; }; class Derived3: public virtual Base//父类4+char a[3] 4+指向父类的指针 12</span> { public: char a[3]; }; class Derived4: public virtual Base//父类4+char a[3] 4+指向父类的指针 +新的虚函数表的指针16 { public: char a[3]; virtual void fun3(){} }; int _tmain(int argc, _TCHAR* argv[]) { cout << "4 " << sizeof(Base) << endl; cout << "Derived1 8 " << sizeof(Derived1) << endl; cout << "Derived2 8 " << sizeof(Derived2) << endl; cout << "Derived3 12 " << sizeof(Derived3) << endl; cout << " Derived4 16 " << sizeof(Derived4) << endl; system("pause"); return 0; }
相关文章推荐
- 三十二、C++内存布局,对象大小计算、虚函数虚继承对类内存模型的影响
- 从零开始学C++之对象的使用(一):static 成员变量、static 成员函数、类/对象的大小
- 从零开始学C++之对象的使用(一):static 成员变量、static 成员函数、类/对象的大小
- 从零开始学C++之对象的使用(一):static 成员变量、static 成员函数、类/对象的大小
- [置顶] 从零开始学C++之虚继承和虚函数对C++对象内存模型造成的影响(类/对象的大小)
- C++之虚继承和虚函数对C++对象内存模型造成的影响(类/对象的大小)
- [置顶] 从零开始学C++之虚继承和虚函数对C++对象内存模型造成的影响(类/对象的大小)
- [C++] 虚函数对C++对象内存模型的影响
- Data语意学之虚继承和虚函数对C++对象内存模型造成的影响(类/对象的大小)
- c++带有虚函数的对象的大小问题
- 从零开始学C++之虚继承和虚函数对C++对象内存模型造成的影响(类/对象的大小)
- 虚继承和虚函数对c++对象存储模型的影响(类/对象的大小)
- 浅析C++中虚函数的调用及对象的内部布局
- C++中函数参数的对象值传递问题
- C++指针探讨 (四) 函数对象
- 浅析C++中虚函数的调用及对象的内部布局1 (来自:lizhe1985)
- 在Delphi与C++之间实现函数与对象共享
- C++中的标准函数对象
- 在Delphi与C++之间实现函数与对象共享
- [转]浅析C++中虚函数的调用及对象的内部布局(利用汇编深刻理解C++虚函数底层实现机制)