成员变量和成员函数分开存储

成员变量和成员函数分开存储

视频链接



在C++中,类内的变量和函数虽然都称为成员,但成员变量和成员函数是分开存储的

只有非静态成员变量才属于类的对象上

如何验证呢?就看这个类占有多少内存空间

示例1:首先来看看空对象所占用的内存空间

#include<iostream>
using namespace std;
#include<string>




class Person {

};

int main() {

	cout << sizeof(Person) << endl;

	system("pause");

	return 0;
}

在这里插入图片描述



空对象所占用内存空间为1
1.C++编译器会给每个空对象也分配一个字节空间,是为了区分对象占内存空间的位置
2.哪怕是两个空对象,它们两个都有独一无二的内存空间,不能两者占用同一块内存空间
3.每个空对象都有独一无二的内存地址
4.注意:这个类到底所占多少内存空间由类中的成员决定




示例2:

#include<iostream>
using namespace std;
#include<string>




class Person1 {

};


// 成员变量和成员函数分开存储的
class Person2 {
public:
	int A;// 非静态成员变量,属于类的对象上

};






// 成员变量和成员函数分开存储的
class Person3 {
public:
	int A;// 非静态成员变量,属于类的对象上
	static int B;// 静态成员变量,不属于类的对象上
	void fun1() { // 非静态成员函数,也不属于类的对象;
		// 成员和成员函数分开存储
		A = 100;
		cout << "A=" << A << endl;
	}
	static void fun2() {
		// 静态成员函数,不属于类的对象
	}
};







void test01() {
	Person2 p2;
	cout << "sizeof(只包含非静态成员变量的对象p2)=" << int(sizeof(p2)) << endl;

}


void test02() {
	Person3 p3;
	cout << "sizeof(完整的对象p3)=" << int(sizeof(p3)) << endl;

}







int main() {

	cout << "sizeof(空对象Person1)="<<sizeof(Person1) << endl;
	cout << endl;
	test01(); cout << endl;
	test02();
	system("pause");

	return 0;
}



在这里插入图片描述

由上图我们可以看出,p3类中包含了以下几个成员
1:非静态成员变量A
2:静态成员变量B
3:非静态成员函数fun1
4:静态成员函数fun2
但整个类所占内存空间为4字节,和整个类只包含非静态成员变量A的所占字节数一样,所以说明:

只有非静态成员变量才属于类的对象,剩下的包括:成员函数(无论是静态还是非静态)和静态成员变量等都不属于类的对象。成员变量和成员函数是分开存储的





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值