概述
1.类的实例化
用类类型创建对象的过程,称为类的实例化。
(1)类知识一个模型一样的东西,限定了类有哪些成员,定义出一个并没有分配实际的内存空间来存储它;
(2)一个类可以实例化出多个对象,实例化出的对象,占用实际的物理空间,存储类成员变量;
(3)做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出粗腰什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。
2.类对象模型
一个类的大小,实际就是该类中“成员变量”之和,也要进行内存对齐,注意空类的大小,空类比较特殊,编译器给了空类一个字节来唯一标识这个类。
结构体内存对齐规则:
(1)第一个成员在与结构体偏移量为0的地址处;
(2)其他成员变量要对齐到某个数字(对齐数)的整数倍的地址;
注意:对齐数=编译器默认的一个对齐数与该成员大小的较小值。VS中默认的对齐数为8.
(3)结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐参数取最小)的整数倍;
(4)如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。
3.this指针
(1)C++中通过引入this指针解决该问题,即:C++编译器给每个“非静态的成员函数”增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针取访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
(2)this指针的特性
this指针的类型:类类型* const;
只能在“成员函数”的内部使用;
this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参,所以对象中不存储this指针;
this指针是成员函数第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户传递。
最后
以上就是清爽树叶为你收集整理的类与对象2的全部内容,希望文章能够帮你解决类与对象2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复