1679
правок
Изменения
м
== Часть 2 ==
== Часть 3 ==
== Динамический полиморфизм ==
еще немного адекватности
__TOC__
== Часть 1 Классы ==
# Что определяет класс? Чем обличается класс от объекта?
#: Класс определяет тип объекта, а объект - это конкретный экземпляр класса.
# Какие операции разрешается перегружать только как методы класса?
#: =, [], (), ->. Вопрос - почему?
# Дайте определение дружественной функции. Как объявляется дружественная функция? А как определяется?
# Дайте определение конструктора. Каково назначение конструктора? Перечислите отличия конструктора от метода.
# Можно ли в качестве операции индексирования использовать операцию вызова функции ()? В чем ее преимущества перед операцией []?
# Почему необходимо писать два определения операции индексирования? Чем они отличаются?
#: Первое определение возвращает ссылку на элемент, которых храним в контейнере, для того чтобы можно было его изменять.
#: T & operator[](size_t index);
#: Второе определение возвращает новый объект, для случая, когда мы работаем с контейнером, который нельзя менять.
#: T operator[](size_t index);
# Дайте определение вложенного класса.
# Можно ли класс-итератор реализовать как внешний класс? А как вложенный? В чем отличия этих методов реализации?
# Каким образом вложенный класс может использовать методы объемлющего класса? А объемлющий — методы вложенного?
# Что такое «запредельный» элемент, какую роль он играет в контейнерах?
# Объясните, по каким причинам трудно написать универсальный контейнер, элементы которого могут иметь произвольный тип.
== Исключения ==
# Назовите ключевые слова С++, которые используются для обработки исключений.
#: try, catch, throw
# Исключение — это:
## событие;
# Какие виды нестандартных исключений вы знаете?
# В чем отличие механизма структурной обработки исключений Windows от стандартного механизма?
== Динамический полиморфизм ==
# Какие две роли выполняет наследование?
# Какие виды наследования возможны в С++?
#: Простое и множественное?
# Чем отличается модификатор доступа protected от модификаторов private и public?
# Чем открытое наследование отличается от закрытого и защищенного?
# Сформулируйте правила написания конструкторов в производном классе.
# Каков порядок вызова конструкторов? А деструкторов?
#: Конструкторы - сначала базовый, потом производный. Деструкторы наоборот.
# Можно ли в производном классе объявлять новые поля? А методы?
# Если имя нового поля совпадает с именем унаследованного, то каким образом разрешить конфликт имен?
# Объясните, что такое «срезка» или «расщепление».
#: Что это???
# Объясните, зачем нужны виртуальные функции.
#: Чтобы перегрузить их поведение при наследовании.