![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 125
|
![]()
Здравствуйте всем!
Забавляюсь с ардуино. Возник услово теоретический вопрос. Первый конструктор хватает скормленный ему ID элемента и распихивает в специально подготовленную структуру необходимые данные. После чего вызывает второй, перегруженный конструктор, который собственно занимается делом. Я не знаю правильно ли так делать. Собственно мякотка, как я сейчас это написал: Код:
Код:
Вопрос вот такой - при вызове первого конструктора резервируется память под экземпляр "Button", что происходит при вызове второго конструктора с тем же именем "Button". Можно ли вообще так делать? Создается ли новый экземпляр? Сразу напишу что в тестовом режиме все работает. Я волнуюсь за правильность кода и за память. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]()
Написали неправильно. Вы просто создаете объект, который уничтожается при выходе из конструктора. То, что вам надо называется делегирующий конструктор.
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,371
|
![]()
А зачем именно конструктор? Что мешает сделать просто метод(ы) и вызывать из конструктора?
|
![]() |
![]() |
![]() |
#4 | ||
Форумчанин
Регистрация: 26.01.2009
Сообщений: 125
|
![]() Цитата:
Я посмотрел на делегирующие конструкторы, это интересно, но я не вкурил пока как я могу это использовать. Я не понимаю как делегировать с моей последовательностью действий, она не позволяет. Я подумаю ещё, спасибо за совет. И всё таки хотелось бы узнать почему в моем случае объект будет удалятся при выходе из конструктора. Цитата:
Спасибо! upd: Можно на ты Последний раз редактировалось BoozZzilla; 24.09.2017 в 11:02. Причина: Я парень простой |
||
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]()
Потому что у объектов есть область видимости. В данном случае:
Код:
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 125
|
![]()
Я хочу уяснить для себя что понял правильно.
В моем варианте экземпляр "Button" создаваемый в главном коде будет виден на протяжении всей программы, а новый экземпляр создается конструктором номер два, но виден только в области конструктора номер один(откуда был вызван второй) и уничтожается при выходе из конструктора номер один? И ещё: второй экземпляр он локальный? Поэтому нет проблемы с переопределением? Вроде бы имя то же самое. Или он переопределяет первый экземпляр и на выходе вообще ничего не остается после удаления? |
![]() |
![]() |
![]() |
#7 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]() Цитата:
Цитата:
Код:
|
||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему при наличии конструктора в функции пишется название конструктора::и название метода класса? | Мой повелитель | Общие вопросы C/C++ | 5 | 22.04.2016 00:41 |
вызов конструктора одного класса внутри конструктора другого | tolikprankster | Помощь студентам | 1 | 04.08.2014 12:42 |
ошибка при вызове процедуры | Emperator12 | Общие вопросы Delphi | 8 | 22.09.2012 00:52 |
Автоматическое преобразование на основе первого аргумента конструктора в вызов самого конструктора | jennya | Visual C++ | 8 | 03.10.2010 19:03 |