23 вопроса
Практика
Зачем нужно объявлять функцию-член как virtual в C++, и чем это отличается от обычной функции-члена с точки зрения разрешения функций и привязки?
Как ты можешь реализовать функциональность печати для всей иерархии классов, используя friend оператор<<, который динамически привязывается к защищённым виртуальным функциям?
Какие потенциальные недостатки использования runtime type identification, и как это может повлиять на производительность и управление классами?
Как в объектно-ориентированном программировании управляются вызовы виртуальных функций, и какое влияние этот механизм оказывает на производительность?
Что такое pure virtual function и в каких ситуациях её использовать?
Что такое чистая виртуальная функция и как она связана с абстрактным классом?
Как в C++ реализованы виртуальные функции?
Что такое чистая виртуальная функция и почему её важно реализовать во всех производных классах?
Что такое виртуальная функция и как она позволяет указателю на базовый класс вызывать переопределённый метод производного класса?
Что такое переопределение методов и какие основные требования нужно соблюдать, чтобы переопределить метод в объектно-ориентированном программировании?
Что такое полиморфизм и как его можно реализовать в объектно-ориентированных языках программирования типа C++ и Java?
Что происходит при создании и уничтожении объекта из производного класса, в каком порядке вызываются конструкторы и деструкторы и как выделяется и освобождается память?
Что может добавить производный класс по сравнению с его базовым классом?
Какие аспекты базового класса наследует производный класс, а какие нет?
Что такое множественное наследование и как виртуальное наследование решает его проблемы? Какие плюсы и минусы множественного наследования в объектно-ориентированном программировании?
В каких случаях множественное наследование — это нормальный выбор при проектировании в объектно-ориентированном программировании, и как его нужно использовать, чтобы не навредить коду?
Что такое наследование в объектно-ориентированном программировании и как оно позволяет производному классу переиспользовать и расширять свойства и методы базового класса?
Почему использование метода printOn() считается менее оптимальным, чем использование friend функции для операций вывода, и в каких ситуациях метод printOn() всё ещё может быть подходящим выбором?
Когда мне использовать функцию-член класса, а когда дружественную функцию?
Что это значит, что дружба в объектно-ориентированном программировании не наследуется, не транзитивна и не взаимна?
Какие плюсы и минусы у friend функций в C++, и как можно использовать Virtual Friend Function Idiom, чтобы сделать динамическое связывание с friend функциями?
Можешь объяснить, как использование friend классов или функций влияет на инкапсуляцию в объектно-ориентированном дизайне, и в каких ситуациях это может быть полезной практикой?
Какова цель friend'а в объектно-ориентированном программировании и как он позволяет получать доступ между классами и функциями?