Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 12 Классы_Объекты_Массивы объектов 2015.doc
Скачиваний:
65
Добавлен:
29.02.2016
Размер:
110.59 Кб
Скачать

Массивы объектов

Объекты – это переменные, и они имеют те же возможности и свойства, что и переменные любых других типов. Поэтому вполне допустимо создавать массивы объектов. Синтаксис объявления массива объектов и доступ к его элементам совершенно аналогичны обычным массивам.

// Пример 12.7. Создание и использование одномерного массива объектов.

#include <iostream>

using namespace std;

class Samp{

int x;

public:

void setx(int n){x = n;}

int getx(){return x;}

};

int main(){

Samp ob[4]; // массив объектов из 4-х элементов

for(int i = 0; i < 4; i++) // присваивание элементам массива

ob[i].setx(i); // значений от 0 до 3

for(int i = 0; i < 4; i++) // чтение элементов массива

cout<< ob[i].getx()<<' '; // и вывод их на экран – 0 1 2 3

system("pause");

}

В этом примере следует обратить внимание, как вызываются функции для каждого элемента массива. Имя массива объектов, в данном случае ob, индексируется; затем длядоступа к элементу массиваобъектовприменяется операция точка(.),за которой следует имя вызываемой функции (в нашем примере это функции setx() и getx()).

Аналогично создаётся` и используется двумерный массив объектов:

Samp ob[2][4]; // двумерный массив объектов

// из 2 строк и 4 столбцов

int k = 1;

for(int i = 0; i < 2; i++) // присваивание элементам массива

for(int j = 0; j < 4; j++){ // объектов значений от 1 до 8

ob[i][j].setx(k); k++;

cout<< ob[i][j].getx()<<' '; // вывод элементов массива объектов

}

Если класс включает конструктор с параметрами, то массив объектов такого класса можно инициализировать явно.

// Пример 12.8. Явная инициализация одномерного массива объектов.

#include <iostream>

using namespace std;

class Samp{

int x;

public:

Samp(int n){x = n;}

int getx(){return x;}

};

int main(){

Samp ob[4] = { 1, 2, 3, 4 }; // создание массива объектов ob,

// вызов конструктора 4 раза

for(int i = 0; i < 4; i++) // вывод элементов массива ob

cout<< ob[i].getx()<<' '; // 1 2 3 4

system("pause");

}

10