TheCalligrapher
Ученик
(248)
5 лет назад
Вопрос бессмыслен, ибо в нем не указан конкретный язык программирования.
С++:
> Для того, чтобы вызвать виртуальный метод, объект должен быть создан через new.
Нет. Совершенно не важно как был создан объект.
> Все виртуальные методы базового класса являются виртуальными и для производных классов.
Да. Идентификация метода производится по его сигнатуре: имени и списку параметров.
> Виртуальный метод можно вызвать только через указатель на объект.
Нет. Виртуальный метод можно вызвать через что угодно. Однако полиморфизм (ради которого и существуют виртуальные методы) работает только через указатели или ссылки на объекты.
> Виртуальные методы могут быть константными.
Да.
> Обращение к объекту по ссылке не позволяет вызывать виртуальные методы.
Нет. Позволяет.
> Невиртуальные методы не могут вызывать виртуальные методы.
Нет. Могут.
> Виртуальные методы могут вызывать невиртуальные методы.
Да. Могут.
Jurijus Zaksas
Искусственный Интеллект
(474253)
5 лет назад
Для C#:
Для того, чтобы вызвать виртуальный метод, объект должен быть создан через new. - Да.
Все виртуальные методы базового класса являются виртуальными и для производных классов. - Да.
Виртуальный метод можно вызвать только через указатель на объект. - Нет, можно вызвать из класса-наследника.
Виртуальные методы могут быть константными. - Я ХЗ, что это такое. Статическими не могут быть, если это имелось ввиду.
Обращение к объекту по ссылке не позволяет вызывать виртуальные методы. - Что такое "Обращение к объекту по ссылке"? Объект - это и есть ссылка, вернее, пара ссылок.
Невиртуальные методы не могут вызывать виртуальные методы. - Могут, если они не статические.
Виртуальные методы могут вызывать невиртуальные методы. - Могут.
Все виртуальные методы базового класса являются виртуальными и для производных классов.
Виртуальный метод можно вызвать только через указатель на объект.
Виртуальные методы могут быть константными.
Обращение к объекту по ссылке не позволяет вызывать виртуальные методы.
Невиртуальные методы не могут вызывать виртуальные методы.
Виртуальные методы могут вызывать невиртуальные методы.