- •Вопрос 1. Ссылки и ссылочные параметры.
- •Вопрос 2. Перегрузка функций.
- •Вопрос 3. Шаблоны функций.
- •Вопрос 4. Использование const с указателями.
- •Вопрос 5. Область действия класса. Управление доступом к членам класса. Отделение интерфейса от реализации.
- •Вопрос 6. Понятие конструктора .Использование констр-ра с аргументами по умолчанию. Конструктор по умолчанию.
- •Вопрос 7. Понятие деструктора. Когда вызывается конструктор и деструктор.
- •Вопрос 8. Константные объекты и функции-члены.
- •Вопрос 9. Дружественные функции и друж. Классы.
- •Вопрос 10. Указатель this.
- •Вопрос 11. Операции new и delete.
- •Вопрос 12. Статические члены класса.
- •Вопрос 13. Понятие перегрузки операций.
- •Вопрос 14. Функции-операции как члены класса и как друж-е функции
- •Вопрос 15. Перегрузка операций ввода/вывода в поток, бинар и унар операций.
- •Вопрос 17. Перегрузка операций индексации массива.
- •Вопрос 18. Понятие наследования. Механизм ограничения доступа при наследовании.
- •Вопрос 19. Приведение типа указателя базового класса к указателю производного класса и наоборот.
- •Вопрос 21. Конструкторы и деструкторы в производных классах.
- •Вопрос 22. Неявное преобразование объектов производных классов в объекты базового класса.
- •Вопрос 23. Иерархия классов. Уровни наследования.
- •Вопрос 24. Множественное наследование.
- •Вопрос 25. Неопределённость при множ-м наследовании. Включение «классы в классах».
- •Вопрос 26. Понятие виртуальной функции.
- •Вопрос 27. Понятие полиморфизма.
- •Вопрос 28. Абстрактные и конкретные базовые классы.
- •Вопрос 29. Статическое и динамическое связывание.
- •Вопрос 30. Виртуальные деструкторы.
- •Вопрос 31. Шаблоны классов.
- •Вопрос 32. Шаблоны классов и пользовательские типы
- •Вопрос 33. Шаблоны и наследование.
- •Вопрос 34. Классы и объекты потоков ввода/вывода. Иерархия потоковых классов.
- •Вопрос 35, 38. Предопределённые потоковые объекты. Состояние ошибок потока.
- •Вопрос 36. Манипуляторы потоков.
- •Вопрос 37. Неформатированный ввод/вывод с помощью read/ write
- •Вопрос 38. Состояние ошибок ввода/вывода
- •Вопрос 39. Понятие исключения. Когда должна использоваться обработка исключений.
- •Вопрос 40. Генерация исключений. Повторная генерация исключений.
- •Вопрос 41. Перехват исключений.
- •Вопрос 42. Спецификация исключений. Обработка неожиданных исключений.
- •Вопрос 43. «Раскручивание» стека. Иерархия исключений стандартной библиотеки.
- •Вопрос 44. Конструкторы, деструкторы и исключения. Исключения и наследование.
- •Вопрос 45. Обработка неуспешного выполнения new.
- •Вопрос 46. Класс auto_ptr и динамич выделение памяти.
- •Вопрос 47. Static_cast, reinterpret_cast
- •Вопрос 48. Инфо о типе времени выполнения. Оператор dynamic_cast
- •Вопрос 49. Ключевое слово explicit.
- •Вопрос 50. Ключевое слово mutable.
- •Вопрос 51. Указатели на члены класса.
- •Вопрос 52. Множественное наследование. Виртуальные базовые классы.
- •Вопрос 53. Классы-контейнеры и классы-итераторы.
- •Вопрос 54. Понятие ооп. Три условия ооп-программы. Парадигмы ооп.
- •Вопрос 55.Основные составляющие объектного подхода: абстрагирование, инкапсуляция, модульность.
- •Вопрос 56. Основные составляющие объектного подхода: иерархия, типизация, полиморфизм.
- •Вопрос 57. Природа объекта. Состояние, поведение, идентичность объекта.
- •Вопрос 58. Отношения между объектами. Связи. Агрегация.
- •Вопрос 59. Природа классов. Отношения между классами. Типы отношений.
Вопрос 10. Указатель this.
В С++ каждый объект сопровождается указателем на самого себя — называемым указателем this — это неявный аргумент во всех ссылках на элементы внутри этого объекта. Указатель this можно использовать также и явно. Каждый объект может определить свой собственный адрес с помощью ключевого слова this.
Указатель this неявно используется для ссылки как на данные-элементы, так и на ф-ции-эл-ты объекта. Тип указателя this зависит от типа объекта и от того, объявлена ли ф-ция-э-т, в к-ой используется this, как const. Всегда ссылается на объект.; использ для доступа к данным и возвращения значений.
Вопрос 11. Операции new и delete.
Операции new и delete обеспечивают более удобные средства для реализации динамического распределения памяти (для любых встроенных или определенных пользователем типов)
New имеет один операнд
переменная_указатель = new тип_переменной;
переменная_указатель = new(тип_переменной);
переменная_указатель = new тип_переменной[];
typeNamePtr = new TypeName;
new возвращает адрес переменной Операция new автоматически создает объект соответствующего размера, вызывает конструктор объекта и возвращает указатель правильного типа. Если память не может быть выделена, new возвр NULL. Создание объекта с помощью new вызывает констр-р данного объекта. При создании массива исп-ся констр-р для каждого эл-та массива.
Перимущества:
- new автоматически определяет кол-во неоходимой памяти
- new возвр указатель требуемого типа
- имеется возм-ть инициализации объекта
- можно выполнить перегрузку опреатора new глобально или для конкр класса.
Delete освобождает память, на к-ую указывает переменная_указатель.
Оператор delete следует использ-ть только для Переменная_указатель, выделенную с помощь new.
Единств операнд – указатель , получ с помощью new.
При удалении объекта вначале вызыв деструктор, затем выполн delete .
delete переменая_указатель;
delete[] переменая_указатель;
Вопрос 12. Статические члены класса.
Члены класса могут исп-ся с ключ-м словом static. Когда член класса объявл-ся как статический, он тем самым даёт компилятору сообщение, что может сущ-ть только одна копия этого члена, сколько бы объектов этого класса не создавалось. Статический член исп-ся совместно всеми объектами. Все стат. члены инициал. нулями при создании первого объекта.
Класс, содерж static члены, объявл как глобальный.
При объявлении стат-го члена класса этот член не определяется. Статические элементы могут быть открытыми(доступ к Эл-там класса возможен посредством любого объекта класса), закрытыми или защищенными (protected; должны быть доступны открытым функциям-элементам этого класса или друзьям класса). Статическим данным-элементам можно задать начальные значения один (и только один) раз в области действия файл. Они существуют даже тогда, когда не существует никаких объектов этого класса.
class counter{
static int count;
};
int counter::count;
Ф-ция-эл-т тоже м.б. объявлена как static, если она не должна иметь доступ к нестатическим Эл-там класса. Они не могут прямо ссылаться на нестатические данные или нестат. ф-и, объявл-е в их классе. Причина – отсутствие указателя this. =>, они могут обращ. только к статич. данным или ф-ям данного класса. Также они не могут быть виртуальными или объявл. с модиф-ми const; ей не перед-ся this.
Осн примеры использ-я:
- одна область памяти
- стат компоненты не явл частью объектов класса
- статич перем-я сущ даже при отсутствии объектов данного класса
- их можно инициализ только в файле, в к-ом они объявлены