|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.02.2015, 20:55 | #1 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 67
|
Касаемо наследования и полиморфизма
Всем привет, есть следующая иерархия классов:
Код:
Код:
|
17.02.2015, 22:08 | #2 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Потому что метод fnct переопределяет метод из класса Y, а не X. А метод funct из Y НЕ переопределяет метод из Х - он лишь носит то же название (и вносит путаницу). И, поскольку тип вашей переменной Х, вызывается ветвь переопределений для Х, в которой есть только базовый метод.
Если сделать в Y override вместо virtual (или поменять тип переменной с Х на Y), то вызовется fnct из класса Z.
Изобретатель велосипедов
|
17.02.2015, 22:09 | #3 |
Форумчанин
Регистрация: 16.01.2015
Сообщений: 672
|
warning почему не читаете?
|
18.02.2015, 05:07 | #4 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 67
|
Selestis, спасибо огромное, теперь все понятно. Просто ни в одной книге не нашел разбора подобной ситуации.
P.S. warning читал, но мне нужно было разобраться в сути происходящего |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Понятие полиморфизма | andy301086 | Общие вопросы .NET | 2 | 24.04.2012 22:33 |
Вопросы касаемо Widgets | Lindemann66 | Qt и кроссплатформенное программирование С/С++ | 2 | 02.09.2011 13:51 |
Классы с использованием полиморфизма | Patrool | Помощь студентам | 0 | 09.12.2010 00:35 |
Принципы реализации полиморфизма | Nostalgia | Помощь студентам | 1 | 05.01.2010 11:49 |