Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по С++ глава 5.doc
Скачиваний:
3
Добавлен:
05.11.2018
Размер:
166.91 Кб
Скачать

5.2.3. Инициализация массивов

Массивы объектов уже рассматривались в гл. 3. Для инициализации массива любого типа используется стандартный синтаксис, унаследованный из языка С.

int Table [5] = {1, 2, 3, 4, 5};

На этот синтаксис налагается следующее ограничение. При инициализации массива объектов можно присвоить единственное значение каждому из его элементов и нельзя передать в конструктор группу значений. Однако конструкторы копирования и преобразования позволяют инициализировать объекты, используя единственный аргумент, следовательно, бывают полезны при инициализации массивов объектов. В качестве примера рассмотрим инициализацию массива объектов класса CCurrency различными способами.

CCurrency Money (95, 34);

CCurrency MoneyTable [5] =

{

Money,

CCurrency (15, 94),

10L,

12.23,

};

Первый элемент (MoneyTable [0]) инициализируется существующим объектом класса CCurrency с помощью конструктора копирования; второй – инициализируется конструктором, создающим временный объект класса CCurrency (затем данный объект используется для инициализации элемента массива также конструктором копирования); третий – инициализируется константой типа long с помощью конструктора преобразования с параметром типа long; четверили – константой типа double с помощью другого конструктора преобразования. Последний элемент массива инициализируется неявно; следовательно, для него компилятор вызывает конструктор по умолчанию.

Как упоминалось в гл. 2, нельзя явно инициализировать массив объектов, созданных динамически с помощью оператора new. Вместо этого компилятор вызывает конструктор по умолчанию для каждого элемента.