前言
本文主要是我关于学习C++类机制实现的笔记,所以写的可能没有条理,还可能会有错误的结论,希望大佬能指出...
一、空类的大小为1
class A {
};//sizeof(A)=1
解释:
编译器在A中插进去的一个char ,使得class A的不同实体(object)在内存中配置独一无二的地址。这个char是用来标识类的不同对象。
也就是说,当类的原本大小为0时,实例化时,无法分配大小为0的内存,同时也要使不同的实例地址不同,所以编译器给类A加了一个成员,这样就能正常分配空间了。当类原本大小不为0,就不会加入这个char。
二、类的一般布局
class A
{
public:
int a = 1;//成员
A() {};//构造函数
~A() {}