#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就不需要到了