| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Приватное наследование |
| Автор: Larrr 16.1.2010, 20:13 | ||
Привет! Разбираюсь тут с ООП в С++. Попробовала написать такой пример:
На выходе имеем: I'm A constructor I'm A constructor Посему вопроса 2: 1) Почему, когда В унаследовался от А приватно, конструктор В (изначалько конструктор предка А) не сделался приватным? 2) В каких случаях потомок наследует, а в каких не наследует конструктор родителя? Спасибо! |
| Автор: NightmareZ 16.1.2010, 20:32 |
| Конструктор не наследуется. Добавлено через 39 секунд Конструктор не наследуется. |
| Автор: mes 16.1.2010, 20:56 |
| конструкторы не наследуются если нет явного вызова конструктора предка, вызывается конструктор по умолчанию. |
| Автор: Larrr 16.1.2010, 21:31 |
| andrew_121 : 1) Потому, что я пребываю в уверенности (возможно, необоснованной), что нельзя создать объект, у которого есть только приватный конструктор. По результату вызова В b; видно, что вызвался конструктор родителя, который, по идее, должен бы быть приватным. Почему вызывается приватный конструктор? Я бы еще поняла, если бы вызвался конструктор по умолчанию... 2) Не пропала. mes: Мой пример показывается, что при создании В вызывается конструктор А. Те. наследуется конструктор родителя. |
| Автор: saneea 16.1.2010, 21:45 | ||||
Larrr, приватное наследование моделирует отношение "использует" (или "реализуется при помощи"), а открытое наследование моделирует отношение "является разновидностью". То есть: класс B использует класс A как "вспомогательный" механизм. При этом в функциях-членах класса B можно использовать ОТКРЫТЫЕ функции-члены и данные. Другими словами, вы могли бы написать код так:
И призошло бы то же самое, хоть A_m определено в приватной секции!
Любой конструктор не принимающий параметров называется "конструктор по умолчанию" (независимо от того, вы его написали, или его сгенерировал компилятор). |
| Автор: zim22 16.1.2010, 21:46 | ||
неправильный логический вывод. P = при создании В вызывается конструктор А (ИСТИНА) Q = при создании В наследуется констуктор А (ЛОЖЬ) P Q ИСТИНА ЛОЖЬ (P => Q) ЛОЖЬ |