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

    科技2022-07-21  123

    文章目录

    1、对象数组1.1、格式1.2、定义 2、对象指针2.1、用对象指针访问单个对象成员。2.2、用对象指针访问对象数组

    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
    Processed: 0.013, SQL: 8