13.2.2 对象的使用
当定义一个对象后,就可以像变量一样来使用该对象。本节将主要讲述对象构成的数组和指向对象的指针的用法。
1.对象数组
对象数组是指每一个数组元素都是对象的数组。也就是说,若某一个类有若干个对象,就可以把这一系列对象用一个数组来存放。定义格式如下:
- <类名> <数组名> [<数组长度>];
【示例13-18】 演示student对象数组的使用方法。
- class student
- {
- private:
- static int counter;
- int id;
- char* name;
- float chinese,english,math;
- public:
- student();
-
- student(char * n_name,float n_chinese,float n_english,float n_math);
- ~student();
- void show();
- };
- int student::counter=1;
- student::student()
- {
- id=counter++;
- name="##";
- chinese=english=math=0;
- }
- student::student(char * n_name,float n_chinese,float n_english,float n_math)
- {
- id=counter++;
- name=n_name;
- chinese=n_chinese;
- english=n_english;
- math=n_math;
- }
- student::~student()
- {
- cout<<"student"<<id<<" is released!"<<endl;
- }
- void student::show()
- {
- cout<<"学号"<<setw(6)<<"姓名"<<setw(6)<<"语文"<<setw(6)<<"英语
- "<<setw(6)<<"数学"<<endl;
- cout<<id<<setw(6)<<name<<setw(6)<<chinese<<setw(6)<<english<<setw(6)<
- <math<<endl;
- }
- void main()
- {
- student student_array[10];
- for (int i=0;i<10;i++)
- student_array[i].show();
- }
程序运行结果如下:
- 学号 姓名 语文 英语 数学
- 1 ## 0 0 0
- 学号 姓名 语文 英语 数学
- 2 ## 0 0 0
- 学号 姓名 语文 英语 数学
- 3 ## 0 0 0
- 学号 姓名 语文 英语 数学
- 4 ## 0 0 0
- 学号 姓名 语文 英语 数学
- 5 ## 0 0 0
- 学号 姓名 语文 英语 数学
- 6 ## 0 0 0
- 学号 姓名 语文 英语 数学
- 7 ## 0 0 0
- 学号 姓名 语文 英语 数学
- 8 ## 0 0 0
- 学号 姓名 语文 英语 数学
- 9 ## 0 0 0
- 学号 姓名 语文 英语 数学
- 10 ## 0 0 0
- student10 is released!
- student9 is released!
- student8 is released!
- student7 is released!
- student6 is released!
- student5 is released!
- student4 is released!
- student3 is released!
- student2 is released!
- student1 is released!
分析:当创建对象数组时,系统自动调用无参数的构造函数student(),而程序退出前,系统自动依次调用析构函数。对象数组与普通数组一样,只是每个数组的成员都是一个对象而已。
注意:在定义对象数组不能给构造函数传递参数时,在类中必须有一个不带参数的构造函数或带默认参数的构造函数。在上面的例子中就是系统自动调用无参数的构造 函数。
2.对象指针
在C++(www.cppentry.com)中,对象除了可以直接引用外,还可以通过对象指针来引用。其定义和使用同指向变量的指针都是相同的。
【示例13-19】 将示例13-18中的主函数进行修改,加入对象指针。
- ...
- void main()
- {
- student student_array[10];
- student *s;
- s=student_array;
- for (int i=0;i<10;i++,s++)
- s->show();
- }
分析:程序的运行结果与上例相同。在该程序中,定义了指向student类的指针s,通过指针s访问类调用的方法。
【责任编辑:
云霞 TEL:(010)68476606】