??????????????????????????????????????????????????????????????????????????????????????
8.2 对象数组
1.对象数组的每一个元素都是同类的对象
2.在建立数组时,同样要调用构造函数,如果有50个元素,那么就要调用50次构造函数
3.编译系统只为每一个对象元素的构造函数传递一个是实参,所以在定义数组时提供的实参个数不能超过数组元素个数
4.提问:如果构造函数有多个参数,在定义对象数组时应当怎样实现初始化呢?
? ?回答:在花括号中分别写出构造函数名并在括号内指定实参
? ?例子:Student stu[3]={
? ? ? ? ? ? ? ?Student(1001,12,12);
? ? ? ? ? ? ? ?Student(1002,13,13);
? ? ? ? ? ? ? ?Student(1003,14,14);
? ? ? ? ? ? ? ? };
??????????????????????????????????????????????????????????????????????????????????????
8.3 对象指针
1.对象空间的起始地址就是对象指针
2.作用:可以定义一个指针数组,用来存放对象的地址,这就是指向对象的指针变量
a:指向对象数据成员的指针
形式:数据名 *指针变量名
b:指向对象成员函数的指针
注意??:定义指向对象成员函数的指针变量的方法和定义指向普通函数的指针变量方法不同
a:定义指普通函数的指针变量
形式:类型名? (*指针变量名)(参数列表)
void (*p)();//p指向void型函数的指针变量
b:定义指向对象成员函数的指针变量
形式:数据类型名(类名::*指针变量名)(参数列表)
void (Time:: *p)();//定义p是指向Time类中公用成员函数的指针变量
c:使指针变量指向一个公用成员函数的一般形式:指针变量名=&类名::成员函数名
3.指向当前对象的this指针:在每一个成员函数中都包含一个特殊的指针,这个指针的名字是固定的,称为this
a:作用:它是指向本类对象的指针,他的值是当前被调用的成员函数所在的对象的起始地址
b:this指针在系统中是自动实现的
??????????????????????????????????????????????????????????????????????????????????????
8.4 公用数据的保护
1.常对象的形式:类名? ?const? ?对象名[(实参名)] 也可以是const 类名 对象名[(实参名)]
2.常成员函数可以访问常对象中的数据成员,但仍然不允许修改常对象中数据成员的值
注意??:常成员函数不能调用另一个非const成员函数
3.指向对象的常指针
a:将指针变量声明为const型,这样指针变量始终保持为初值,不能改变,即其指向不变,指向对象的常指针变量的值不能改变,即始终指向一个对象
b:形式:类名 * const 指针变量名
4.指向常对象的指针变量
a:形式:const 类型名 * 指针变量名
b:如果一个变量已被声明为常变量,只能用指向常变量的指针变量指向她它,而不能用一般的(指向非const型变量)指针变量去指向它
c:当希望在调用函数时对象的值不被修改,就应当把形参定义为指向常对象的指针变量,同时用对象的地址作实参(对象可以是const或非const)
??????????????????????????????????????????????????????????????????????????????????????
9.5 对象的动态建立和释放
1.用new运算符动态建立对象,用delete运算符撤销对象
欢迎指正,共同学习!