基类与子类占用空间及字节对齐(P180)
/*
派生类的大小:
a.派生类对象中包含基类成员变量,而且基类成员变量的存储位置位于派生类对象新增的成员变量之前。
b.派生类对象占用的存储空间大小,等于基类成员变量占用的存储空间大小加上派生类对象自身变量占用的存储空间大小。
c.对象占用的存储空间包含对象中各成员变量占用的存储空间。对象的大小与普通成员变量有关,与成员函数和类中的静态成员变量无关。
d.为类对象分配空间时,遵循字节对齐(边界对齐)的原则。空类的大小是1,这是一种特殊情况。可以使用sizeof()函数计算对象占用的字节数。P181
int型变量占4个字节,char型变量占1个字节。
在64位系统中,指针占8个字节。
在32位系统中,指针占4个字节
*/
//基类与子类占用空间及字节对齐
#include<iostream>
using namespace std;
class BaseClass
{
int v1,v2;
char v4;
public:
int temp1(){}
};
class DerivedClass:public BaseClass
{
int v3;
int *p;
public:
int temp(){}
};
int main()
{
cout<<"Base="<<sizeof(BaseClass)<<endl;
cout<<"Derived="<<sizeof(DerivedClass)<<endl;
return 0;
}
//在32位系统中,指针的大小是4字节,而不是8字节

浙公网安备 33010602011771号