Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
outoftime
║XLR8║
763 / 662 / 212
Регистрация: 25.07.2009
Сообщений: 3,320
Записей в блоге: 5
15.05.2014, 13:05 0

Инициализация массива объектов через конструктор

15.05.2014, 13:05. Просмотров 3334. Ответов 12
Метки (Все метки)

Ответ

Игорюня, просто создается локальный объект класса и присваивается элементу массива. Только параметры инициализации передаются сразу конструктору класса вместо метода инициализации.

Добавлено через 19 минут
Игорюня, Внесу уточнение: при создании массива объектов происходит выделение памяти и инициализация конструктором по умолчанию и, в случае, если необходима инициализировать объекты другими параметрами лучше всего использовать метод инициализации как вы делали в первом сообщении
C++
1
array[i].init(new_params)
Так как размер объекта определяется размером его полей и может быть довольно большим, или же размер массива достаточно большим, что-бы инициализация
C++
1
array[i] = some(new_params)
сказалась на производительности из-за необходимости выделения памяти под новый объект и удаления выделенной памяти старых элементов массива.

Что-бы убрать инициализацию с помощью конструктора по-умолчанию при создании массива достаточно завести указатель на массив и выделять память динамически
C++
1
2
3
int **array = new (int*)[size]
// for i=0..size-1
array[i] = new some(new_params)
Будет больше расходов на управление выделяемой памятью и передачей размера массива, зато не будет накладных расходов на перевыделение памяти.

Вернуться к обсуждению:
Инициализация массива объектов через конструктор
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2014, 13:05

Инициализация массива объектов класса Point
Когда создаю массив объектов {(x1, y1), (x2, y2),...} или передаю этот объект в...

Сравнение двух объектов через конструктор с одним аргументом
class Int { private: unsigned int integer; public: inline int...

Как правильно создать и вызвать конструктор для массива объектов?
Сам класс class Planet{ public: string name; protected: double diameter;...

0
Другие темы раздела
C++ Составить список из одинаковых элементов двух других списков http://www.cyberforum.ru/cpp-beginners/thread1175675.html
нужна ваша помощь) Даны 2 двузсвязных списка s1 и s2, создать новый список s3, элементами которого будут элементы, входящие одновременно в 2 эти списка.
C++ Команда всем stream-ам Допустим у меня есть такое : std::ofstream foutOne(fileOne); std::ofstream foutTwo(fileTwo); // и std::cout как указать всем ,что на пример precision(5); причем одним... http://www.cyberforum.ru/cpp-beginners/thread1175668.html
Заменить все члены последовательности, большие заданного числа Z, этим числом; подсчитать количество замен C++
Дана последовательность действительных чисел а1, а2,..., an. Заменить все ее члены, большие данного Z, этим числом. Подсчитать количество замен. Это все, что я могу:( #include "stdafx.h" #include...
написать программу решения уравнения ax^3+bx=0 для произвольных a и b C++
написать программу решения уравнения ax^3+bx=0 для произвольных a и b.
C++ Строки / Работа со строками [C++] http://www.cyberforum.ru/cpp-beginners/thread1175653.html
3) Сложные действия со строками Дано осмысленное текстовое сообщение (т.е. алфавитно-цифровая информация, разделен ная пробелами и знаками препинания, в конце которого ставится точка): Подсчитать...
C++ Курсовая: "Многопоточный запуск VB скриптов из приложения C++" Добрый день форумчане! Подскажите пожалуйста с чего начать и общую архитектуру приложения по теме курсовой: "Многопоточный запуск VB скриптов из приложения C++"? Спасибо подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru