对象数组 对象数组:数组中的每一个元素都是类的对象。 声明一个一维对象数组的语法形式: 类名 数组名[常量表达式]; 引用对象数组元素的公有成员: 数组名[下标].成员名; 对象数组的初始化:调用构造函数对每个元素初始化 如: CStudent s[3] = { CStudent(10001, "AAAAAA" ), CStudent(10002, "BBBBBB" ), CStudent(10003, "CCCCCC")};
例10 对象数组的应用
#include <iostream.h> #include <string.h> class CStudent { private: int number; char name[10]; int age; public: CStudent(int xh, char *xm, int a); int GetAge(); };
CStudent::CStudent(int xh, char *xm, int a) { number = xh; strcpy(name, xm); age = a; } int CStudent::GetAge() { return age; } void main() { int sum=0; CStudent s[5] = { CStudent(10001, "AAAAAA", 20), CStudent(10002, "BBBBBB",22 ), CStudent(10003, "CCCCCC",24 ), CStudent(10004, "DDDDDD",26 ), CStudent(10005, "EEEEEE",28 ) }; for(int i=0; i<5; i++) { sum += s.GetAge(); } cout << sum/5 << endl; }
程序运行结果为: 24
对象指针 对象指针:用于存放对象地址的变量。 声明对象指针的语法形式: 类名 *对象指针名; 例如: CStudent *p; CStudent s(1001,”AAAAAA”, 20); p = &s; 通过对象指针访问成员的方法为: 对象指针名->成员名
例11 通过对象指针访问成员,将例9主函数改写
void main() { int sum=0; CStudent *p[5]; p[0] = new CStudent(10001, "AAAAAA", 20); p[1] = new CStudent(10002, "BBBBBB", 22); p[2] = new CStudent(10003, "CCCCCC", 24); p[3] = new CStudent(10004, "DDDDDD", 26); p[4] = new CStudent(10005, "EEEEEE", 28); for(int i=0; i<5; i++) { sum += p->GetAge(); } cout << sum/5 << endl; for(i=0; i<5; i++) { delete p; } }
程序运行结果为: 24
this指针
this指针:类的每个普通成员函数都有一个隐含的this指针参数,不需要显示说明。this指针指向调用该函数的对象。 例: class CPoint
{ public: CPoint(int x=0, int y=0); int GetX(); int GetY(); private: int x, y; }; CPoint::CPoint(int x, int y) { x=x; y=y; //此处的x和y都是函数形参中的x和y,因为参数是局部变量,在函数体中优先访问(同名覆盖),因此此处无法访问到类成员中的x和y }; |
本文转载于唯C教育,【Linux基础】对象数组与对象指针
http://www.weicedu.com/forum.php?mod=viewthread&tid=74&fromuid=4
(出处: http://www.weicedu.com/)