![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 67
|
![]()
Всем привет, есть следующая иерархия классов:
Код:
Код:
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
Потому что метод fnct переопределяет метод из класса Y, а не X. А метод funct из Y НЕ переопределяет метод из Х - он лишь носит то же название (и вносит путаницу). И, поскольку тип вашей переменной Х, вызывается ветвь переопределений для Х, в которой есть только базовый метод.
Если сделать в Y override вместо virtual (или поменять тип переменной с Х на Y), то вызовется fnct из класса Z.
Изобретатель велосипедов
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 16.01.2015
Сообщений: 672
|
![]()
warning почему не читаете?
|
![]() |
![]() |
![]() |
#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 |