【Linux基础】对象数组与对象指针

对象数组

对象数组:数组中的每一个元素都是类的对象。

声明一个一维对象数组的语法形式:

类名 数组名[常量表达式];

引用对象数组元素的公有成员:

数组名[下标].成员名;

对象数组的初始化:调用构造函数对每个元素初始化

如:

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

可将构造函数改写如下:CPoint::CPoint(int x, int y){ this -> x=x; this -> y=y;};定义该类对象:CPoint p(10,20);

{

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/)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值