不同类占空间大小

首先,讨论只有一个类的情况,一个空类型对像不包含任何信息,但是必须在内存中占用一定空间,否则无法使用,C++中每个空类占1Byte


#include<iostream>

using namespace std;
class Base
{
public:
private:
};

int main()
{
cout <<"Base "<<sizeof(Base)<<endl;
return 0;
}


当Base类中包含一个构造函数、析构函数和普通成员函数时

#include<iostream>

using namespace std;
class Base
{
public:

Base();

void  fun();

~Base();
private:
};

int main()
{
cout <<"Base "<<sizeof(Base)<<endl;
return 0;
}


当Base类中包含数据类型时,要考虑字节对齐(以定义的成员数据中最大的类型为标准对齐)

using namespace std;
class Base
{
public:

Base();

void  fun();

~Base();

private:

int a,

double b;

};

int main()
{
cout <<"Base "<<sizeof(Base)<<endl;
return 0;
}



现在,我们创建一个派生类,基类和派生类都为空时

#include<iostream>
using namespace std;


class Base
{
public:
private:
};

class Derive :public Base
{
public:
private:
};
int main()
{
cout <<"Base "<<sizeof(Base)<<endl;
cout<<"Derive "<<sizeof(Derive)<<endl;
return 0;
}


都有普通函数、析构函数和构造函数时

#include<iostream>
using namespace std;

class Base
{
public:
Base();
void fun();
~Base();
private:
};

class Derive :public Base
{
public:
Derive();
void fun();
~Derive();
private:
};
int main()
{
cout <<"Base "<<sizeof(Base)<<endl;
cout<<"Derive "<<sizeof(Derive)<<endl;
return 0;
}



都定义了数据成员时

#include<iostream>
using namespace std;

class Base
{
public:
Base();
void fun();
~Base();
private:

int a;

char b;

double c;
};

class Derive :public Base
{
public:
Derive();
void fun();
~Derive();
private:

  int a;

char b;

double c;

};

int main()
{
cout <<"Base "<<sizeof(Base)<<endl;
cout<<"Derive "<<sizeof(Derive)<<endl;
return 0;
}


暂时讨论到这儿,有不足的地方希望大家可以指出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值