C++学习(四) 对象数组与对象指针

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
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值