|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.07.2012, 17:15 | #1 |
Пользователь
Регистрация: 15.10.2010
Сообщений: 65
|
Задача на собеседовании - какой метод класса будет вызван в примере
Проходил собеседования. Поставили такую задачку:
PHP код:
Какие у кого варианты? (аргументируйте, пожалуйста, почему) |
26.07.2012, 20:28 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
26.07.2012, 20:31 | #3 | |
Форумчанин
Регистрация: 15.11.2008
Сообщений: 577
|
ето си шарп наверное
Цитата:
Последний раз редактировалось Stilet; 26.07.2012 в 21:10. |
|
26.07.2012, 21:57 | #4 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,311
|
В принципе, существуют методы раннего и позднего связывания.
Для метода класса, в котором метод описан как virtual, формируется таблица виртуальных методов. В этом случае, при вызове из потомка метода с таким-же именем как и у родителя, будет вызван метод потомка. Если метод не описан как виртуальный, то будет вызываться метод предка. Т.е. в данном случае: a.M1(); - метод класса A a.M2(); - метод класса A b.M1(); - метод класса B. В - потомок класса A, метод описан как virtual и переопределен в классе B. b.M2(); - метод класса A Цитата:
Как-то так, ...
|
|
26.07.2012, 22:07 | #5 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
а у нас обьект класса B. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
31.07.2012, 17:30 | #6 |
Пользователь
Регистрация: 15.10.2010
Сообщений: 65
|
Компилятор показал ответ:
В А В В |
31.07.2012, 23:03 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
как и ожидалось, правда я пропустил четвертый вызов чего-то.
четвертый метод был перекрыт(не переопределен), и у нас используется через ссылку на B, потому и вызывается метод от B. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ассемблер, какой из вариантов будет правильный | Ashley12 | Помощь студентам | 1 | 14.01.2012 01:08 |
Какой будет алгоритм=) | specnazkin | Помощь студентам | 2 | 27.11.2010 20:37 |
C# готовая задача, какой будет конечный результат? | dr.Chas | Помощь студентам | 2 | 26.11.2010 08:58 |
Если в классе объявить объект другого класса,будет ли видно переменные первого класса из объекта второго? | TwiX | Общие вопросы Delphi | 3 | 15.11.2009 00:54 |
Метод для класса который будет работать с будующим экземпляром | SunKnight | Общие вопросы .NET | 7 | 12.05.2009 20:25 |