1 | |
Наследование конструкторов04.03.2015, 08:49. Показов 3756. Ответов 15
Метки нет Все метки)
(
Вопрос по теории наследования:
Есть некоторый базовый класс с двумя конструкторами типа паблик, первый без аргумента, второй с одним аргументом. Был создан производный от исходного класс, с применением паблик наследования. Будут ли объекты производного класса иметь доступ ко обоим конструкторам базового класса?
0
|
|
04.03.2015, 08:49 | |
Ответы с готовыми решениями:
15
Наследование конструкторов?
Наследование конструкторов |
04.03.2015, 09:09 [ТС] | 4 |
А если в производном классе вообще не писать конструкторов?
В одной книге по Си++ приводится пример наследования конструктора без аргументов без его определения в производном классе, но автор пишет что конструктор с аргументами таким образом не наследуется. Что за парадокс? Без аргументов наследуется а с аргументами нет, в чем причина? Добавлено через 13 минут Ilot, ?
0
|
![]() ![]() |
||||||
04.03.2015, 09:45 | 5 | |||||
Брехня.
0
|
04.03.2015, 12:44 | 6 | ||||||||||
Возможно имелось ввиду это:
В С++11 появилось еще вот такое наследование конструкторов:
0
|
04.03.2015, 18:12 [ТС] | 7 | |||||
DiffEreD, Ilot,
Я вот этот пример имею в виду. Конструктор не наследуется.
0
|
16476 / 8974 / 2200
Регистрация: 30.01.2014
Сообщений: 15,588
|
|
04.03.2015, 18:24 | 8 |
Он и тут не наследуется. Тут используется конструктор по-умолчанию, т.к. ты сам не определил ни одного конструктора в классе CountDn, то компилятор сам сделал конструктор без аргументов. Его поведение таково, что вызываются конструкторы базовых классов и конструкторы полей. Так что это только кажется, на самом деле у каждого класса свои конструкторы.
Про С++11 и его способ "перетащить" конструктор из базового класса в наследника выше уже сказали.
0
|
16476 / 8974 / 2200
Регистрация: 30.01.2014
Сообщений: 15,588
|
|
04.03.2015, 18:38 | 10 |
Лафоре графоман. Я серьезно.
Причем я сначала думал, что это просто перевод такой, но в оригинале там тоже самое. Вот тебе настоящий источник: 12.1/4
1
|
16476 / 8974 / 2200
Регистрация: 30.01.2014
Сообщений: 15,588
|
||||||
04.03.2015, 18:57 | 12 | |||||
Не в любом, а когда это нужно.
Если тебя устраивает, что конструктор наследника вызывает конструктор базового класса без параметров, то можно не писать. Если нужно например такое, как в примере ниже, то придется сделать конструктор (или использовать фичи С++11). Небольшой поясняющий пример:
0
|
04.03.2015, 19:21 [ТС] | 13 | ||||||||||
Зачем писать
Ааа, я понял, при создании неинициализированного объекта производного класса, вызывается конструктор без арг-ов этого класса, который вызывает конструктор с одним параметром из базового класса, тем самым поле объекта инициализируется 12?
0
|
16476 / 8974 / 2200
Регистрация: 30.01.2014
Сообщений: 15,588
|
||||||
04.03.2015, 19:30 | 14 | |||||
Мне так захотелось. Это непринципиально.
Можно. Пишу так, потому что минимальные проекты, с которыми я работаю, давно превышают несколько миллионов строк. Если ты будешь раскидываться в таких проектах импортами других неймспейсов в глобальное пространство, то скорее всего будешь бит или сброшен с моста с зацементированными ногами. ![]() Простой пример:
Добавлено через 32 секунды Так точно ![]()
0
|
Tulosba
|
04.03.2015, 19:41
#15
|
0
|
DrOffset
|
04.03.2015, 20:26
Наследование конструкторов
#16
|
0
|
04.03.2015, 20:26 | |
Наследование конструкторов Наследование конструкторов Явное наследование конструкторов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |