C++ ---- 对象数组

数组不仅可以由简单变量组成(例如整型数组的每一个元素都是整型变量),也可以由对象组成(对象数组的每一个元素都是同类的对象)。在日常生活中,有许多实体的属性是共同的,只是属性的具体内容不同。每一个数组元素是一个“类”的对象。

Student stu[50];                 //定义了stud数组,有50个元素。

在建立数组时,同样要调用构造函数。如果有50个元素,就要调用50次。

在定义对象数组时,也可以提供实参实现初始化,如果构造函数只有一个参数,在定义数组时可以直接在等号后面的花括号内提供实参。如果构造函数有多个参数时,在花括号中分别写出构造函数并指定实参。

Student stud[3] = {60,70,78};    //3个实参分别传递给3个数组元素的构造函数。
Student stud[3] = {           //定义对象数组
   Student(1001,18,87),       //调用第1个元素的构造函数,为它提供3个实参
   Student(1002,19,76),       //调用第2个元素的构造函数,为它提供3个实参
 Student(1003,18,72),       //调用第3个元素的构造函数,为它提供3个实参
}

下面的程序说明了对象数组的使用方法:

#include <string>
#include <iostream>
using namespace std;
class Student
{
public:
    Student(int n, string nam, char s)     //constructor
    {
        num = n;
        name = nam;
        sex = s;
        cout << "Constructor called." << endl;
    }
    ~Student()                             //destructor
    {
        cout << "Destructor called " << num << endl;
    }
   void display()
    {
        cout << "num: " << num << endl;
        cout << "name: " << name << endl;
        cout << "sex: " << sex << endl <<endl;

    }
private:                    //private data members, unaccessable to public
    int num;
    string name;
    char sex;
};


int main()
{
    Student stud[3] = {
        Student(1,"Peng,Yuyan",'m'),
        Student(2,"Yi,Ni",'f'),
        Student(3,"Chen,Shiyang",'m'),
    };
    stud[0].display();
    stud[1].display();
    stud[2].display();
    return 0;
}

运行结果如下所示:

Constructor called.
Constructor called.
Constructor called.
num = 1
name = Peng,Yuyan
sex = m
num = 2
name = Yi,Ni
sex = f
num = 3
name = Chen,Shiyang
sex = m
Destructor called 3
Destructor called 2
Destructor called 1

1. 声明了对象数组,Student stud [3],并且初始化每个元素,并且显性调用了student这个构造函数。

2. 析构函数在同一个作用域,遵循“先构造的后析构,后构造的先析构”原则。



猜你喜欢

转载自blog.csdn.net/nearcsy/article/details/80963202