【c++】初步探索c++对象模型

#pragma once
#include <iostream>


using std::cout;
using std::endl;


class A
{
public:
<span style="white-space:pre">	</span>//virtual void f1();
<span style="white-space:pre">	</span>//int a;
};

void main(int argc,char* argv[])
{
<span style="white-space:pre">	</span>cout << "sizeof(A):  " << sizeof(A) << endl;
<span style="white-space:pre">	</span>system("pause");
}

输出结

果sizeof(A):  1

请按任意键继续. . .

空对象中有一个隐藏的1字节大小,那是编译器安插进去的一个char,这使得这一个class的两个对象在内存中配置独一无二的地址。


#pragma once
#include <iostream>


using std::cout;
using std::endl;


class A
{
public:
<span>	</span>virtual void f1();
<span>	</span>//int a;
};

void main(int argc,char* argv[])
{
<span>	</span>cout << "sizeof(A):  " << sizeof(A) << endl;
<span>	</span>syste<strong>m("pause");
}</strong>
输出结果:

sizeof(A):  4
请按任意键继续. . .

由于class中包含虚函数,所以编译器会为类中安插一个虚表指针vfptr,大小为4字节,原来的char就不需要到了

猜你喜欢

转载自blog.csdn.net/whueratsjtuer/article/details/52039972