|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.06.2012, 11:43 | #1 |
В прострации
Форумчанин
Регистрация: 13.01.2009
Сообщений: 239
|
Наследование. Подводные камни.
Привет! Почему компилируется код:
Код:
Пол-жизни сидючи, в монитор глядючи...
|
28.06.2012, 12:52 | #2 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2Last
потому что восходящее приведение (uppercast) производится неявно, ибо дочерний класс можно использовать вместо базового
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
28.06.2012, 13:11 | #3 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Это не подводные камни, это и есть смысл наследования.
Потомки являются предками (ну, вы меня поняли) - их можно использовать так же, как будто они просто предки. Но не только, поскольку они еще и потомки. Ваш вопрос на язык реальности можно приблизительно перевести так: "Почему я должен стоять в очереди с обычными человеками, если я - сотрудник МВД/Папа Римский/композитор Берлиоз/губернатор Южногорска/человек с двумя головами?"
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
28.06.2012, 14:01 | #4 | |
В прострации
Форумчанин
Регистрация: 13.01.2009
Сообщений: 239
|
Цитата:
В принципе с сабжем разобрался, спасибо.
Пол-жизни сидючи, в монитор глядючи...
|
|
28.06.2012, 20:59 | #5 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Если тебе нужно запретить неявное приведение типов, измени в своём коде:
class B : protected A Студия скажет тебе, что то типа: "приведение существует, но не доступно" Потомок, который отнаследовался через паблик не защищает своих предков. Его предки доступны в любой момент. Потомок, который отнаследовался через протектед - защищает предков. И тогда уже просто так приводить будет нельзя. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Наследование | Funny Студенточка | Общие вопросы C/C++ | 1 | 08.04.2012 21:46 |
наследование | nika@ | C# (си шарп) | 0 | 18.03.2012 15:42 |
Наследование(С++) | Igogo | Помощь студентам | 5 | 20.01.2012 20:07 |
Наследование | Сергей089 | Помощь студентам | 6 | 07.02.2010 12:04 |
Подводные камни в операции += | jojahti | Общие вопросы C/C++ | 5 | 27.08.2009 21:44 |