Здравствуйте, гость ( Вход | Регистрация )
Влад | Дата 24.8.2009, 9:38 |
1. c(); По правилу поиска имен, будет найдена функция A::operator()(). При ее выполнении, будет произведен вызов A::func(), поскольку func() - невиртуальная и связывание произойдет еще на этапе компиляции. 2. c.func(); А вот при этом вызове будет напрямую вызвана функция C::func(), разумеется. Поэтому вывод будет: Цитата class A class C |
|
kwisp | Дата 21.8.2009, 22:32 |
я вот под пивом и то верно ткнул. надо чего-нить с шаблонами и множественным наследованием сообразить что бы прям уххх как проняло. |
|
berserk | Дата 21.8.2009, 16:41 |
Мне кажется что ответ С С Оператор () вызывает на func() без указания имени класса, поэтому мне кажется что вызывается C::func() Ну а вызов func() естественно будет C::func(). Если объявить функцию виртуальной, ничего не изменится UPD: проверил себя на компиляторе и расстроился Зато хоть про виртуальную версию оказался прав Также проголосовал((( надо бы книжку почитать |
|
Kagami | Дата 11.2.2009, 10:48 |
Я голосовал Первым. Просто комментарий только сейчас написал | |
ViGOur | Дата 11.2.2009, 10:08 |
UPD: проверил себя на компиляторе и расстроился Это не повод для расстройства, а повод для освежения памяти чтением книг. Всего ведь не упомнишь. Kagami, чего не проголосовал? |
|
Kagami | Дата 11.2.2009, 10:01 |
Мне кажется что ответ С С Оператор () вызывает на func() без указания имени класса, поэтому мне кажется что вызывается C::func() Ну а вызов func() естественно будет C::func(). Если объявить функцию виртуальной, ничего не изменится UPD: проверил себя на компиляторе и расстроился Зато хоть про виртуальную версию оказался прав |
|
ViGOur | Дата 10.2.2009, 20:40 |
хорошая тема, давайте побольше таких задачек кидать, охота мозги размять хоть немного Договорились! Сами также при случае создавайте темы с подобными задачками. |
|
void* | Дата 10.2.2009, 20:36 |
проголосовал за А С вроде бы все логично, вначале вызывается operator() класса A, т.к. он public и наследование public, ну а затем C::func() если будет виртуальной... то так же само будет я думаю П.С. хорошая тема, давайте побольше таких задачек кидать, охота мозги размять хоть немного все правильно, только что проверил в компиляторе значит я прав блин, а вот насчет виртуальной функции я недостаточно подумал и ошибся |
|
ViGOur | Дата 10.2.2009, 20:05 |
Желательно пишем, почему вы считаете, что будет именно этот ответ, а не другой. |
|
ViGOur | Дата 10.2.2009, 17:48 |
Мы же все не глупые, так что получаем ответ не используя компилятор! И для тренировки мозга, каков будет результат, если func сделать виртуальной функцией? То что ниже этой темы читаем после того, как ответили на задачку... |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 27.4.2024, 17:46 |