对象数组的每一个元素都是同类的对象
- 如果构造函数只有一个参数,在定义数组时可以直接在等号后面的花括号内提供实参
Student stud[3]={60,70,80};
- 在定义数组时提供的实参个数不能超过数组元素
- 如果构造函数有多个参数,应当在花括号中分别写出构造函数名并在括号内指定实参
例:
Student Stud[3]
{
Student(1001,18,87);
Student(1002,19,76);
Student(1003,18,72);
};
对象指针
在建立对象时,编译系统会为每一个对象分配一定的存储空间,以存放其数据成员。对象空间的起始地址就是对象的指针,可以定义一个指针变量用来存放对象的地址。
一般形式:
类名 * 对象指针名
Time *pt;//定义pt为指向Time类对象的指针变量
Time t1;//定义t1为Time类对象
pt=&t1;//将t1的起始地址赋给pt
*pt//pt所指向的对象,即t1
(*pt).hour//pt所指向的对象中的hour成员,即t1.hour
pt->hour//pt所指向的对象中的hour成员,即t1.hour
(*pt).get_time()//调用pt所指向的对象中的get_time函数,即t1.get_time
pt->get.time()//调用pt所指向的对象中的get_time函数,即t1.get_time
- 对象有地址,存放对象的起始地址的指针就是指向对象的指针变量
对象中的成员也有地址,存放对象成员地址的指针变量就是指向对象成员的指针变量
定义指向对象数据成员的指针变量的一般形式为:
数据类型名 * 指针变量名
定义指向公用成员函数的指针变量的一般形式为:
*数据类型名(类名::指针变量名)(参数表列);
例:
p2=&Time::get_time;
使指针指向一个公用成员函数的一般形式是:
指针变量名=&类名::成员函数名;
this指针,是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址,this指针在需要时也可以显式使用
return(height*width*length);//隐含使用this指针
return(this->height*this->width*this->length);//显式使用this指针
- 可以用this表示被调用的成员函数所在的对象,它就是this所指向的对象,即当前的对象,例如在成员函数a.volume()(假设已经定义)的函数体中,若出现this,它就是本对象a
则上面的return语句可以改写为:
reutn((*this).height*(*this).width*(*this).length);
注意*this两边的括号不能省略,因为成员运算符“.“的优先级要高于指针运算符