|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.12.2019, 08:38 | #1 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
массив из объектов класса
Здравствуйте.
Код; Код:
Но компилятор не дает выполнить строчку Код:
А если сделать так: Код:
Таким образом получается, что переменная b в классе Class2 будет содержать мусор. Как правильно создать массив из объектов класса? Последний раз редактировалось BLACK_RAIN; 14.12.2019 в 08:44. |
14.12.2019, 09:53 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Код:
|
14.12.2019, 10:51 | #3 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
del
Последний раз редактировалось BLACK_RAIN; 14.12.2019 в 11:28. |
14.12.2019, 11:27 | #4 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
кажется, дошло. При создании массива, все его элементы создаются автоматически и для каждого выполняется конструктор. Не понимаю, зачем это сделано?
Как тогда удалить из массива ненужные более элементы или добавить новые? |
14.12.2019, 12:16 | #5 | |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
для инициализации, это же очевидно
если компилятор поддерживает современные стандарты, то при создании динамического массива можно передать параметры в конструктор (список инициализации в фигурных скобках) Код:
Цитата:
ну, или, если такое хобби и много свободного времени, то изобретать свои велосипеды и героически их отлаживать Последний раз редактировалось Алексей1153; 14.12.2019 в 12:18. |
|
14.12.2019, 12:57 | #6 | |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Почему нельзя создать элементы равные NULL, а инициализацию возложить на программиста? Это же логично и дает возможность создавать каждый элемент сразу с нужными параметрами, а не менять их уже после того.
Из каких соображений было решено инициализировать все элементы сразу при создании массива? Цитата:
при чем тут векторы? |
|
14.12.2019, 13:48 | #7 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Потому что когда создается класс должен быть вызван его конструктор.
Цитата:
Обходят это созданием нового массива с пустыми элементами, скопировать нужное из старого и удалить старый. Почему нельзя, можно, кто вам мешает... сделайте так, чтоб конструктор по умолчанию инициализировал ваш объект в NULL, что бы это не значило... Вы понимаете разницу между 'Class1' и 'Class1*'? |
|
14.12.2019, 13:54 | #8 | |||
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
Цитата:
Цитата:
Код:
Заполнение всё нулями - это тоже инициализация (для тривиальных объектов подходит). Но нули - это не мусор, это конкретные значения. Ими тоже нужно ЗАПОЛНЯТЬ, сами они там не образуются на месте мусора. Это тоже отдельное действие, это инициализация. будет вызван конструктор. Если ничего не указать - то всё равно будет вызван конструктор (по умолчанию) это ответ на вопрос - Цитата:
Код:
|
|||
14.12.2019, 14:26 | #9 | |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Я имел ввиду, чтобы при создании массива контрукторы элементов вообще не вызывались. А вызывал их сам программист при необходимости.
Цитата:
Понимаю. Но когда я это писал, я не знал, что все элементы классов в массиве создаются автоматически. А если в такой массив нельзя добавить/удалить элемент, то я не понимаю, для каких целей вообще создавать такие массивы. |
|
14.12.2019, 14:33 | #10 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
BLACK_RAIN, структуры и классы ничем не отличаются с точки зрения компилятора (дефолтный public/private за отличие можно не считать)
то, что хочешь получить, это массив указателей. Конечно можно Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамический массив объектов класса, C++ | OmegaBerkut | Общие вопросы C/C++ | 16 | 27.11.2017 15:48 |
Класс содержащий массив объектов другого класса Cli | Вероника99 | Общие вопросы C/C++ | 14 | 28.05.2016 13:52 |
Шаблонный массив объектов класса - C++ | Андрей Иванов | Помощь студентам | 2 | 01.10.2015 17:07 |
Массив объектов класса. | zipwind | Общие вопросы C/C++ | 8 | 01.05.2011 20:56 |
динамический массив объектов класса. С++ | Шиншилка | Помощь студентам | 8 | 25.04.2011 17:58 |