C++----类的成员变量和成员函数在类的储存方式

类的成员变量和成员函数在类的储存方式为分开存储。

即只有非静态变量储存在类中,其余的所有成员均不在类中。

实验如下:

exp1:

class Person1
{



};


void test01()
{

	cout << "size of (空类Person)是:" << sizeof(Person1) << endl;
}

//空类的大小是1,每个实例的对象,都有独一无二的地址。
//每个地址,都有第一无二的char 来维护这个地址。
//这就是空类的大小;

 

exp2:

class Person2
{
public:
	int m_Age;
};

void test02()
{
	cout << "size of Person2 是:" << sizeof(Person2) << endl;
}

//运行结果为 4 ;
//m_Age 属于非静态的成员变量,属于对象身上;

 

exp3:

class Person3
{
public:
	int m_Age;
	void func(){}

};

void test03()
{
	cout << "size of Person3 是:" << sizeof(Person3) << endl;
}

//结果还是4;

//成员属性和成员函数是分开存储的;
//非静态的成员函数不属于对象身上;

exp4:

class Person4
{
public:
	int m_Age;
	void func() {};
	static int m_B;

};

void test04()
{
	cout << "size of Person4 是:" << sizeof(Person4) << endl;
}

//结果还是4;
//说明静态的变量为共享数据,不是对象(类)身上的东西
 

exp5:

class Person5
{
public:
	int m_Age;
	void func() {};
	static int m_B;
	static void func2() {};

};

void test05()
{
	cout << "size of Person5 是:" << sizeof(Person5) << endl;
}

//结果还是4;
//静态成员函数也不属于对象。


//结论:只有非静态成员变量才属于对象。
//其余的都不归属于对象。

 

exp6:

class Person6
{
public:
	int m_Age;
	void func() {};
	static int m_B;
	static void func2() {};
	double m_C;

};

void test06()
{
	cout << "size of Person6 是:" << sizeof(Person6) << endl;
}

//答案是16,原因是字节对齐。
//****kkkk(int)+********(double)
 

int main()
{
    test01();
    test02();
    test03();
    test04();
    test05();
    test06();

    return 0;
}

//end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值