C++中的对象数组详细解析

 更新时间:2013年10月16日 08:51:18   作者:  
在建立数组时,同样要调用构造函数。如果有50个元素,就需要调用50次构造函数。在需要的时候,可以在定义数组时提供实参以实现初始化

类是对象的抽象,我们可以使用一个类来定义很多的对象,然后每个对象都有自己的属性。

当我们使用类来定义很多相同结构的对象的时候,我们可以采取对象数组的方法。

例如,一个班有50个学生,我们定义了一个学生类,该类的学生具有相同的数据成员和成员函数,我们就可以定义一个这样的数组。

复制代码 代码如下:

Student stdu[50];//假设已经声明了Student类,定义stud数组,有50个元素

======================对象数组的初始化=========================

在建立数组时,同样要调用构造函数。如果有50个元素,就需要调用50次构造函数。在需要的时候,可以在定义数组时提供实参以实现初始化。

如果构造函数只有一个参数可以这样初始化:

复制代码 代码如下:

Studet stud[3]={60,70,80};//三个实参分别传递给3个数组元素的构造函数

如果构造函数有多个参数时,应该这样做:
复制代码 代码如下:

Student stud[3]={//假设构造函数有3个参数
    Student(10,20,30),//调用第一个元素的构造函数,提供3个实参
    Student(40,50,60),//调用第二个元素的构造函数,提供3个实参
    Student(70,80,90) //调用第三个元素的构造函数,提供3个实参
};

在建立对象数组时,分别调用构造函数,对每个元素初始化。每一个元素的实参分别用括号括起来,对应构造函数的一组形参。

===================一个对象数组的例子=================

要求:建立一个对象数组,内放5个学生的数据(学号,成绩),设立一个函数max,在max函数中找出5个学生中成绩最高者,并出输出结果。

复制代码 代码如下:

#include<iostream>
 #include<string>
 using namespace std;
 class Student
{
  public:
   Student(string , int );//声明构造函数
  void Print();//声明信息输出函数
  string num;
  int score;
};
 Student::Student(string n,int s)
{
  num=n;
  score=s;
 }
 void Student::Print()
{
  cout<<num<<"\t"<<score<<endl;
 }
 int main()
{
  Student stud[5]={
   Student("001",90),
   Student("002",94),
   Student("003",70),
   Student("004",100),
   Student("005",60) 
  };
  int max,i=0,k=0;
  max=stud[0].score;
  for(i=0;i<5;i++)
   {
    cout<<stud[i].num<<"\t"<<stud[i].score<<endl;
    if(stud[i].score>max)
    {
      k=i;
      max=stud[i].score;
    }
   }
  cout<<"=============MAX:==========="<<endl;
 stud[k].Print();
 cout<<endl;
 }

相关文章

  • udp socket客户端和udp服务端程序示例分享

    udp socket客户端和udp服务端程序示例分享

    这篇文章主要介绍了udp socket客户端和udp服务端程序示例,需要的朋友可以参考下
    2014-03-03
  • C语言全面细致讲解文件操作

    C语言全面细致讲解文件操作

    这篇文章主要为大家详细介绍了C语言的文件操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-05-05
  • map插入自定义对象总结

    map插入自定义对象总结

    黑树在插入节点时,必须依照大小比对之后在一个合适的位置上执行插入动作。所以作为关键字,起码必须有“<”这个比较操作符
    2013-09-09
  • 浅析C++中的重载,隐藏和覆盖

    浅析C++中的重载,隐藏和覆盖

    在C++语言中,函数扮演着很重要的角色,不管面向过程设计,还是基于对象设计。本文主要为大家介绍了函数中重载、覆盖和隐藏的相关知识,感兴趣的小伙伴可以了解一下
    2022-12-12
  • Qt creator中项目的构建配置和运行设置的步骤

    Qt creator中项目的构建配置和运行设置的步骤

    使用 Qt Creator 集成开发环境构建和运行程序是一件非常简单的事情,一个按钮或者一个快捷键搞定全部,本文主要介绍了Qt creator中项目的构建配置和运行设置的步骤,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C语言实现扫雷游戏详细代码

    C语言实现扫雷游戏详细代码

    这篇文章主要为大家详细介绍了C语言实现扫雷游戏的具体步骤和详细代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • C++使用初始化列表的方式来初始化字段的方法

    C++使用初始化列表的方式来初始化字段的方法

    今天小编就为大家分享一篇关于C++使用初始化列表的方式来初始化字段的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 用c语言编写一个通讯录代码详解

    用c语言编写一个通讯录代码详解

    大家好,本篇文章主要讲的是用c语言实现一个通讯录代码详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • VC定制个性化的MessageBox解决方法

    VC定制个性化的MessageBox解决方法

    这篇文章主要介绍了VC定制个性化的MessageBox解决方法,有助于进一步的了解windows应用程序的消息机制及运行原理,需要的朋友可以参考下
    2014-07-07
  • 剑指offer之C++语言实现链表(两种删除节点方式)

    剑指offer之C++语言实现链表(两种删除节点方式)

    今天小编就为大家分享一篇关于剑指offer之C++语言实现链表(两种删除节点方式),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02

最新评论