1、对象数组
1.1、格式
一维数组格式:
类名 数组名[下标表达式];
例:有五个学生的分数需要描述,定义score数组,每一个数组元素都是score类的一个对象。
score rec[5]; //定义类score的对象数组rec,含有5对象数组对象。
——在建立数组时,同样要调用构造函数。有几个数组元素就要调用几次构造函数。
1.2、定义
——一个参数
score s1[4]={100,99,98,97};
先后四次调用带一个参数的构造函数,分别初始化是s1[0]、s1[1]、s[2]、s1[3]。
——多个参数
score rec[3]= //定义对象数组 rec
{
score(10,11), //调用构造函数,为第一个对象数组元素提供实参10和11
score(20,21), //调用构造函数,为第二个对象数组元素提供实参20和21
score(30,31) //调用构造函数,为第三个对象数组元素提供实参30和31
};
对象数组的代码示例如下
#include<iostream>
using namespace std;
const int N=3;
class score{ //声明类score
public: //公有
score(int a,int b); //声明构造函数
void printscore (); //声明 print函数
private: //私有
int mid_exam; //私有成员函数
int fin_exam; //私有成员函数
};
score::score(int a,int b) //定义构造函数
{
mid_exam=a;
fin_exam=b;
}
void score::printscore() //定义 print函数
{
cout<<mid_exam<<" "<<fin_exam<<endl;
}
int main()
{
score rec[3]={ //定义对象数组
score(10,11), //调用构造函数,为第一个对象数组元素提供实参10和11
score(20,21), //调用构造函数,为第二个对象数组元素提供实参20和21
score(30,31) //调用构造函数,为第三个对象数组元素提供实参30和31
};
for(int i=0;i<N;i++)
{
rec[i].printscore();
}
return 0;
}
运行结果:
10 11
20 21
30 31
2、对象指针
声明对象指针的一般语法格式:
类名* 对象指针名;
2.1、用对象指针访问单个对象成员。
使用对象指针时,首先要把它指向一个已创建的对象,然后才能访问该对象的公有成员。
一般情况下,用点“.”来访问对象的成员,当用指向对象的指针来访问对象成员时,就要用“->”操作符。
示例代码如下:
#include<iostream>
using namespace std;
const int N=3;
class score{ //声明类score
public: //公有
void setscore(int a,int b); //声明 setscore函数
void printscore (); //声明 print函数
private: //私有
int mid_exam; //私有成员函数
int fin_exam; //私有成员函数
};
void score::setscore(int a,int b) //定义 setscore函数
{
mid_exam=a;
fin_exam=b;
}
void score::printscore() //定义 print函数
{
cout<<mid_exam<<" "<<fin_exam<<endl;
}
int main()
{
score s1; //定义类score的对象s1
score *pd; //定义pd为指向类score的对象的指针
pd=&s1; //将对象s1的起始地址赋给pd;
pd->setscore(10,11);
pd->printscore();
return 0;
}
运行结果:
10 11
2.2、用对象指针访问对象数组
代码如下:
#include<iostream>
using namespace std;
const int N=3;
class score{ //声明类score
public: //公有
void setscore(int a,int b); //声明 setscore函数
void printscore (); //声明 print函数
private: //私有
int mid_exam; //私有成员函数
int fin_exam; //私有成员函数
};
void score::setscore(int a,int b) //定义 setscore函数
{
mid_exam=a;
fin_exam=b;
}
void score::printscore() //定义 print函数
{
cout<<mid_exam<<" "<<fin_exam<<endl;
}
int main()
{
score s[2]; //定义类score的对象s
score *pd; //定义pd为指向类score的对象的指针
s[0].setscore(10,11);
s[1].setscore(20,21);
pd=s; //将对象s的起始地址赋给pd;
pd->printscore();
pd++;
pd->printscore();
return 0;
}
运行结果:
10 11
20 21