- •Глава 12. Классы и объекты. Массивы объектов.
- •Определение класса, объекта
- •Спецификаторы доступа к членам класса
- •Определение функций класса
- •Создание объектов, доступ к членам класса
- •Локальные и глобальные объекты
- •Присваивание объектов
- •Конструкторы и деструкторы
- •Конструкторы с параметрами
- •Конструкторы по умолчанию
- •Перегрузка конструкторов
- •Массивы объектов
Массивы объектов
Объекты – это переменные, и они имеют те же возможности и свойства, что и переменные любых других типов. Поэтому вполне допустимо создавать массивы объектов. Синтаксис объявления массива объектов и доступ к его элементам совершенно аналогичны обычным массивам.
// Пример 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");
}