设为首页 加入收藏

TOP

13.2.2 对象的使用
2013-10-07 01:13:27 来源: 作者: 【 】 浏览:73
Tags:13.2.2 对象 使用

13.2.2  对象的使用

当定义一个对象后,就可以像变量一样来使用该对象。本节将主要讲述对象构成的数组和指向对象的指针的用法。

1.对象数组

对象数组是指每一个数组元素都是对象的数组。也就是说,若某一个类有若干个对象,就可以把这一系列对象用一个数组来存放。定义格式如下:

  1. <类名> <数组名> [<数组长度>]; 

【示例13-18】 演示student对象数组的使用方法。

  1. class student  
  2. {  
  3. private:  
  4.     static int counter;         //静态数据成员,用于记录学生人数  
  5.     int id;                     //学号  
  6.     char* name;                 //姓名  
  7.     float chinese,english,math; //语文、英语、数学3门课程成绩  
  8. public:  
  9.     student();                      //构造函数  
  10.     //构造函数,设置学号,姓名,3门课程成绩  
  11.     student(char * n_name,float n_chinese,float n_english,float n_math);          
  12.     ~student();                     //析构函数  
  13.     void show();                    //输出成员信息  
  14. };  
  15. int student::counter=1;             //初始化计数器  
  16. student::student()  
  17. {  
  18.     id=counter++;  
  19.     name="##";  
  20.     chinese=english=math=0;  
  21. }  
  22. student::student(char * n_name,float n_chinese,float n_english,float n_math)  
  23. {  
  24.     id=counter++;  
  25.     name=n_name;  
  26.     chinese=n_chinese;  
  27.     english=n_english;  
  28.     math=n_math;  
  29. }  
  30. student::~student()  
  31. {  
  32.     cout<<"student"<<id<<" is released!"<<endl;  
  33. }  
  34. void student::show()  
  35. {  
  36.     cout<<"学号"<<setw(6)<<"姓名"<<setw(6)<<"语文"<<setw(6)<<"英语  
  37.     "<<setw(6)<<"数学"<<endl;  
  38.     cout<<id<<setw(6)<<name<<setw(6)<<chinese<<setw(6)<<english<<setw(6)<  
  39.     <math<<endl;  
  40. }  
  41. void main()  
  42. {  
  43.     student student_array[10];      //对象数组  
  44.     for (int i=0;i<10;i++)  
  45.          student_array[i].show();  

程序运行结果如下:

  1. 学号  姓名  语文  英语  数学  
  2. 1    ##     0     0     0  
  3. 学号  姓名  语文  英语  数学  
  4. 2    ##     0     0     0  
  5. 学号  姓名  语文  英语  数学  
  6. 3    ##     0     0     0  
  7. 学号  姓名  语文  英语  数学  
  8. 4    ##     0     0     0  
  9. 学号  姓名  语文  英语  数学  
  10. 5    ##     0     0     0  
  11. 学号  姓名  语文  英语  数学  
  12. 6    ##     0     0     0  
  13. 学号  姓名  语文  英语  数学  
  14. 7    ##     0     0     0  
  15. 学号  姓名  语文  英语  数学  
  16. 8    ##     0     0     0  
  17. 学号  姓名  语文  英语  数学  
  18. 9    ##     0     0     0  
  19. 学号  姓名  语文  英语  数学  
  20. 10    ##     0     0     0  
  21. student10 is released!  
  22. student9 is released!  
  23. student8 is released!  
  24. student7 is released!  
  25. student6 is released!  
  26. student5 is released!  
  27. student4 is released!  
  28. student3 is released!  
  29. student2 is released!  
  30. student1 is released! 

分析:当创建对象数组时,系统自动调用无参数的构造函数student(),而程序退出前,系统自动依次调用析构函数。对象数组与普通数组一样,只是每个数组的成员都是一个对象而已。

注意:在定义对象数组不能给构造函数传递参数时,在类中必须有一个不带参数的构造函数或带默认参数的构造函数。在上面的例子中就是系统自动调用无参数的构造 函数。

2.对象指针

C++(www.cppentry.com)中,对象除了可以直接引用外,还可以通过对象指针来引用。其定义和使用同指向变量的指针都是相同的。

【示例13-19】 将示例13-18中的主函数进行修改,加入对象指针。

  1. ... //同上  
  2. void main()  
  3. {  
  4.     student student_array[10];  
  5.     student *s;  
  6.     s=student_array;  
  7.     for (int i=0;i<10;i++,s++)  
  8.          s->show();  

分析:程序的运行结果与上例相同。在该程序中,定义了指向student类的指针s,通过指针s访问类调用的方法。


【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.2.3 this指针 下一篇13.2.1 对象的定义

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: