![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
ViGOur |
![]()
Сообщение
#1
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Мы же все не глупые, так что получаем ответ не используя компилятор!
![]() И для тренировки мозга, каков будет результат, если func сделать виртуальной функцией? ![]() То что ниже этой темы читаем после того, как ответили на задачку... ![]() |
|
|
![]() |
Влад |
![]()
Сообщение
#2
|
Участник ![]() ![]() Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: ![]() ![]() ![]() |
1. c(); По правилу поиска имен, будет найдена функция A::operator()(). При ее выполнении, будет произведен вызов A::func(), поскольку func() - невиртуальная и связывание произойдет еще на этапе компиляции.
2. c.func(); А вот при этом вызове будет напрямую вызвана функция C::func(), разумеется. Поэтому вывод будет: Цитата class A
class C |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 19.2.2025, 1:56 |