73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
||||||
1 | ||||||
Наследование классов и конструкторы23.07.2013, 07:32. Показов 1180. Ответов 17
Метки нет (Все метки)
form::form() button::button() form::~form() Хм, а зачем вызывается конструктор form?
0
|
23.07.2013, 07:32 | |
Ответы с готовыми решениями:
17
Конструкторы. Наследование наследование. конструкторы Наследование, конструкторы Делегирующие конструкторы и наследование |
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
23.07.2013, 07:43 | 2 |
ну дык это
завсегда сначала вызывается конструктор предков, а опосля потомков иначе как потомок узнает свойство предка? да деструктор предка тоже должен вызватся после деструктора потомка
1
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
23.07.2013, 07:44 [ТС] | 3 |
Поэкспериментировав, нечто такое обнаружил. Не знал)
0
|
23.07.2013, 08:45 | 4 | |||||
Ну вы как бы создаете указатель на объект form:
0
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
23.07.2013, 08:46 [ТС] | 5 |
Объявление указателя не приводит к вызовам конструкторов и вообще к каким-либо действиям.
0
|
23.07.2013, 08:54 | 6 | |||||
Тогда как вы ябъясните:
0
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
||||||
23.07.2013, 08:56 [ТС] | 7 | |||||
Вывод такой из-за оператора new который и создаёт экземпляр, убери new и оставь просто
1
|
Неэпический
|
|
23.07.2013, 09:02 | 8 |
Чтобы "сконструировать" предка. Ведь унаследованная часть также должна быть создана и инициализирована, причем перед тем, как будет создаваться часть потомка, ибо она может обращаться к базовой части.
0
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
|
|
23.07.2013, 09:19 | 9 |
э поцики, а че никто не говорит что деструктор должен быть виртуальным у базового класса?
0
|
Croessmah
|
23.07.2013, 09:21
#10
|
0
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
|
||||||
23.07.2013, 09:28 | 11 | |||||
при чем тут полиморфный класс? если от класса будут наследоваться, сделай деструктор виртуальным. да в любом случае сделай деструктор виртуальным ибо когда я отнаследуюсь от этого класса и человек не сделает его виртуальным (деструктор) то когда я удалю свой объект у меня потечет память (возможно, причин много) в базовом объекте. пример элементарный:
0
|
Неэпический
|
||||||
23.07.2013, 09:41 | 12 | |||||
При том, что если класс не полиморфный, то и создавать указатель на базовый класс смысла мало!
Добавлено через 53 секунды
Добавлено через 1 минуту И еще весь комитет стандартизации - зачем нам STL без полиморфизма, да? Добавлено через 6 минут Kukurudza, плюс ко всему, наличие в абстрактном классе виртуального деструктора делает скомпилированный код библиотеки зависимым от транслятора
0
|
23.07.2013, 10:09 | 13 | |||||
Что? ещё никто не сказал про виртуальный деструктор?
Говорю.
1
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
23.07.2013, 10:47 [ТС] | 14 |
опоздал с каментом. игнорируйте это (
Добавлено через 7 минут только начал думать как задать вопрос, чтобы получить такой ответ
0
|
Croessmah
|
23.07.2013, 13:21
#16
|
1
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
23.07.2013, 13:25 [ТС] | 17 |
Насколько я знаю, виртуальные методы в принципе реализованы не по стандарту и в разных компиляторах по разному.
0
|
Неэпический
|
|
23.07.2013, 13:35 | 18 |
цитата:
0
|
23.07.2013, 13:35 | |
23.07.2013, 13:35 | |
Помогаю со студенческими работами здесь
18
Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML Заменить наследование классов на наследование интерфейсов Конструкторы классов Конструкторы классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |