Если класс определяет конструктор с параметрами, то можно инициализировать каждый объект массива путем указания списка инициализации в точности так, как это делается для массивов
других типов. Однако точная форма списка инициализации будет определяться числом параметров конструктора. Для объектов, чьи конструкторы имеют только один параметр, можно просто указать список начальных значений, используя обычный синтаксис инициализации массивов. Каждое значение в списке по порядку передается конструктору элемента в массиве при его создании. Например, ниже приведена программа, инициализирующая массив:
#include <iostream.h>
class cl {
int i;
public:
cl(int j) {i=j;} // конструктор
int get_i() {return i; }
};
int main()
{
cl ob[3] = {1, 2, 3}; // инициализаторы
int i;
for (i=0; i<5; i++)
cout << ob [ i ].get_i () << "\n";
return 0;
}
Эта программа выводит на экран числа 1, 2 и 3.
Если конструктор объекта требует два или большее число аргументов, тогда необходимо использовать слегка измененную форму инициализации, приведенную ниже:
#include <iostream.h>
class cl {
int h;
int i;
public:
cl(int j, int k) { h=j; i=k; } // конструктор
int get_i() {return i; }
int get_h() {return h; }
};
int main()
{
cl ob[3] = {
cl(1, 2),
cl(3, 4 ),
cl(5, 6)
}; // инициализаторы
int i;
for (i=0; i<3; i++) {
cout << ob[i].get_h();
cout << ", ";
cout << ob[i].get_i() << "\n";
}
return 0;
}
В этом примере конструктор класса cl имеет два параметра и поэтому требует два аргумента. В результате инициализация в укороченной форме записи не может использоваться. Вместо этого
применяется инициализация в длинной форме, как показано в примере. (Разумеется, можно использовать эту длинную форму инициализации во всех случаях.)