-12 / 4 / 2
Регистрация: 05.05.2014
Сообщений: 90
|
|
1 | |
Как вызвать другой конструктор для уже созданного объекта конструктором по умолчанию?05.06.2015, 16:30. Показов 9937. Ответов 35
Метки нет (Все метки)
Есть класс в котором несколько конструкторов, Мне в некоторых местах нужно создавать объекты класса с конструктором по умолчанию для предопределения. Как вызвать конструктор для существующего объекта?
0
|
05.06.2015, 16:30 | |
Ответы с готовыми решениями:
35
Как вызвать конструктор для неизвестного объекта? Получение объекта connection созданного конструктором Будет ли считаться конструктором по умолчанию данный конструктор? Что такое конструктор по умолчанию? Как инициализируются данные-члены объекта? |
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
05.06.2015, 16:41 | 2 |
Как родить родившегося ребёнка? Вам капсом ответить?) Выделите всё то, что вам надо в метод - вызывайте этот метод в конструкторе и тогда когда захотите
1
|
-12 / 4 / 2
Регистрация: 05.05.2014
Сообщений: 90
|
|
05.06.2015, 16:54 [ТС] | 3 |
Я и без тебя уже разобрался, потому что ты даже не понял суть вопроса.
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
05.06.2015, 17:01 | 4 |
И где я ошибся? Конструктор можно вызвать только на этапе создания объекта. До С++ 11 когда нельзя было делегировать вызов конструктора, применялся "лайф-хак" - выделение общих инструкций в метод.
0
|
Модератор
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
|
|
05.06.2015, 17:28 | 5 |
Ну как сказать. Можно, например, использовать placement-new по адресу объекта, но это очень нехороший подход. Как минимум придётся позаботиться о явном вызове деструктора для существующего объекта. И в итоге получится цикл:
конструктор-по-умолчанию -> деструктор -> новый конструктор Что есть потенциально небезопасная возня с памятью. Вывод - аккуратно рефакторим код так, чтобы объекты создавались только тогда, когда нужны.
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
05.06.2015, 17:43 | 6 | |||||
с таким подходом надо в конструкторе писать проверки чтоле?))))
Могу даже перефразировать: - Конструктор можно вызвать только на этапе создания объекта, если вам необходимо вызвать конструктор для уже созданного объекта - у вас проблема с архитектурой.
0
|
Модератор
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
|
|
05.06.2015, 17:47 | 7 |
Я так и сказал:
Нет, я имел в виду ручной вызов деструктора перед использованием placement-new. Так я это и написал
0
|
11 / 11 / 5
Регистрация: 01.04.2015
Сообщений: 120
|
|
05.06.2015, 17:50 | 9 |
прошу прощения, случайно наткнулся на тему еще вопросик , а если у нас пара конструкторов, один пустой один с параметрами , то соответсвенно при создании обьекта будет вызываться или первый или второй ?
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
05.06.2015, 18:27 | 11 | |||||
Маленькое дополнение.
1 конструктор будет, если сработавший конструктор не содержит кода, вызывающего другой конструктор этого же класса.
0
|
castaway
|
05.06.2015, 18:34
#12
|
Не по теме: daslex, хотел написать об этом, но посчитал это очевидным)
0
|
lss
|
05.06.2015, 18:37
#13
|
0
|
Заблокирован
|
|||||||||||
05.06.2015, 18:51 | 14 | ||||||||||
Я затеял всё нормальное, просто ступил не подумав об указателях.
И с архитектурой у меня всё впорядке, просто кто-то некто любит выпендриваться думая что он самый умный, и не такой как все... Я решил свою маленькую проблемку, всё работает.
0
|
05.06.2015, 18:57 | 15 | |||||
Ну почему же. В некоторых случаях это становится удобным.
0
|
castaway
|
05.06.2015, 19:04
#17
|
0
|
daslex
|
05.06.2015, 19:10
#18
|
Не по теме: И разве из-за этого приведенное мною высказывание становится ложью? У временного объекта при создании разве не конструктор срабатывает?
0
|
castaway
|
05.06.2015, 19:17
#19
|
0
|
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
|
||||||
05.06.2015, 19:24 | 20 | |||||
Всё равно извращение. Какой смысл в конструкторе с одним параметром? Что мешает так сделать?
0
|
05.06.2015, 19:24 | |
05.06.2015, 19:24 | |
Помогаю со студенческими работами здесь
20
Будет ли утрачена память, когда конструктор копирования вызывается для уже существующего объекта класса? В чем разница между конструктором по умолчанию и конструктором с параметрами? Как вызвать метод OnValueChanged() для слайдера, созданного в OnGUI() Ошибка создания объекта через конструктор по умолчанию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |