1、类的概念
类是一种抽象的数据类型, 类在定义的时候没有给他分配空间,在类声明一个对象的时, 计算机为其分配空间 。
计算机内存一般分为静态数据区、代码区、堆栈区
数据类型分为基本数据类型和复杂数据类型
基本数据类型包括常见的int 、char、bool等,复杂数据类型包括数组、结构体等,基本数据类型一般保存在静态区域,在固定的内存区域,在实际运行过程中,操作系统根据内存分配机制会指定起始地址,由起始地址和数据长度,我们就能够得到他的实际值。
类在定义的时候,
一个类在定义的时候,其成员变量为基本数据类型,那么类本生就是对这些数据类型的引用
例如
class people{
public : int a = 20;
}
如果成员变量是一个复杂的数据类型 ,那么类就是对复杂数据类型的引用
class people{
public: int a[20];
}
如果成员变量是静态就会将其放置到静态数据区域 , 如果是动态的,则会放置到代码区域,
程序运行的时候按照编译出来的代码在堆栈中取其他地址,计算机根据取值所在的区域区分取值还是计算。
类对象的生成过程,包括对象的声明、实例化和初始化。实例化一个对象就是通过new运算符为对象分配空间,在new完成是分配空间。
new出来的东西是一个对象的引用。对象存储在堆里,而引用存放在栈里,指向具体的对象。
2.内存
计算机的内存储器被划分为一个个存储单元。存储单元按一定的规则编号,这个编号就是存储单元的地址。地址编码的基本单元是字节,每个字节由8个二进制位组成,也就是说每个字节是一个基本存储单元,有一个地址。计算机就是通过这种地址编号的方式来管理内存数据读写的准确定位的。
程序如何利用内存单元存取数据
1、通过变量名 , 2.通过地址
程序中的变量要占一定的内存空间 , 对一些常见的类型 ,short型占2字节 , long型占4字节 ,具有静态生存变量在程序开始运行之前就已经分配内存空间的。在变量获得内存空间的同时,变量名也就成了相应内存空间的名称,在便利的整个生存期内都可以用这个名字访问该内存空间,表现在程序语句中就是通过变量名存储变量内容。同时对于不能通过变量名访问或者访问不方便的时候,我们通过地址来访问
int a = 10;
int &b = a;
cout << a << b << endl;
a 和 b的值是相同的,这里的b就是a的别名。 &b是引用(地址)
指针也是一种数据类型 ,具有指针类型的变量陈伟指针变量。 指针变量是用于存放内存单元地址的。
指针形式 数据类型 * 标识符 int * ptr
* 表示的是声明指针类型的变量 int类型数据的指针变量 ,用来存放int型数据的地址
int a = 10;
int &b = a;
int * p = &b;
int * p = &a;
int *p = a; ///错误
cout<< a<<endl;
cout<<*p<<endl;
b的地址和 a的地址是同一个
int &b;定义了一个int型的引用b
int * p = &b 这里&b就表示取地址