sizeof
2017-08-05 本文已影响0人
元素周期表的十七君
定义一个空的类型,里面没有任何成员变量和函数,对该类型求sizeof,得到的结果是?
答:1
为什么不是0?
答:声明该类型的实例的时候,必须在内存中占有一定的空间,否则无法使用实例。占多少内存,由编译器决定。VS中每个空类型的实例占用1字节。
如果在该类型中添加一个构造函数喝析构函数,再求sizeof,得到的结果是?
答:还是1.因为调用构造函数和析构函数只需要知道函数的地址,地址只与类型有关,与实例无关,编译器不会为构造函数和析构函数添加任何额外的信息。
如果把析构函数改为虚函数呢?
答:编译器会为虚函数生成虚函数表,并在该类型的每个实例中添加一个指向虚函数表的指针。32位的机器,一个指针占4字节,sizeof结果为4;64位机器,一个指针占8字节,sizeof结果为8.