- •Понятия объекта, класса объектов.
- •2. Основные понятия ооп: инкапсуляция, наследование и полиморфизм.
- •Модульное программирование.
- •4. Нисходящее программирование
- •5. Структурное програММирование
- •6. Прототипы функций.
- •7. Перегрузка функций
- •8. Значения формальных параметров по умолчанию.
- •9. ССылка и параметры-сСылки
- •10. Встраиваемые функцИи
- •11. ОперацИи new и delete
- •12. ФункцИи-члены и даННые-члены
- •13. Интерфейсы и реализация
- •14. Конструкторы и инициализация
- •15. Конструктор без параметров (по умолчанию)
- •16. Деструкторы и очистка
- •17. Конструктор копирования
- •18. Указатель this
- •19. Статические члены: функции и данные.
- •20. Указатели на члены.
- •21. Структуры и объединения
- •22. Константные члены-функции и константные объекты.
- •Void f();
- •Перегрузка бинарных и унарных операций.
- •Перегруженные операции индексирования, вызова функций, инкремента и декремента префиксных и постфиксных.
- •Перегрузка new, delete
- •Преобразование типов, определяемых пользователем с помощью конструкторов и операций преобразования.
- •Неявное преобразование типов
- •30. Наследование клаССов и производные клаССы.
- •31. Конструкторы, деструкторы и наследование.
- •Множественное наследование
- •Виртуальные базовые классы.
- •Virtual void draw();
- •Виртуальные функции.
- •35. Полиморфизм.
- •36. Абстрактные клаССы и чистые виртуальные функцИи.
- •37. Заголовочные файлы.
- •38. ПредопределЁнНые объекты и потоки.
- •39. Ошибки потоков.
- •41. Конструкторы файловых потоков.
- •42. Открытие файлов в разных режимах.
- •43. ВВод-вывод в файлы.
- •44. Шаблоны функций.
- •45. Параметры шаблонов.
- •46. Шаблоны клаССов.
15. Конструктор без параметров (по умолчанию)
Конструктор является спец. типом процедуры. Каждый тип объекта должен иметь конструктор. Конструктор должен вызываться перед вызовом любого виртуального метода. Вызов виртуального метода без вызова конструктора может привести к блокированию системы. Главная задача конструктора заключается в том, что он устанавливает связь между вызывающим его экземпляром объекта и ТВМ этого объекта. Поскольку такая функция конструирует значения данного типа, она называется конструктором. Конструктор распознается по тому, что имеет то же имя, что и сам класс. Конструкторы могут иметь параметры, что позволяет определить начальное состояние объекта при его порождении. Конструкторы имеют то же имя, что и имя класса, в котором они определены, так что если класс имеет несколько конструкторов, то они должны различаться числом и типом своих параметров.
Например: class date { date(int, int, int); };
Когда класс имеет конструктор, все объекты этого класса будут инициализироваться. Если для конструктора нужны параметры, они должны даваться:
date today = date(23,6,1983); date xmas(25,12,0); // сокращенная форма (xmas - рождество) date my_burthday; // недопустимо, опущена инициализация
Часто необходимо обеспечить несколько способов инициализации объекта класса. Это можно сделать, задав несколько конструкторов. Конструктор без параметров (по умолчанию). Один из способов сократить число родственных функций - использовать параметры по умолчанию.
16. Деструкторы и очистка
Существует специальный тип метода, называемый "сборщиком мусора" или деструктором, для очистки и удаления динамически размещенного объекта. Деструктор объединяет шаг удаления объекта с какими-либо другими действиями или задачами, необходимыми для данного типа объекта. Для единственного типа объекта можно определить несколько деструкторов. Деструктор определяется совместно со всеми другими методами объекта в определении типа объекта:
tyрe TEmployee=object Name:string[25]; Title:string[25]; Rate:Real; constructor Init(AName, ATitle: String; ARate: Real); destructor Done; virtual; function GetName: String; function GetTitle: String; function GetRate: Rate; virtual; function GetPayAmount: Real; virtual; end;
Деструкторы можно наследовать, и они могут быть либо статическими, либо виртуальными. Поскольку различные программы завершения обычно требуют различные типы объектов, мы рекомендуем, чтобы деструкторы всегда были виртуальными, благодаря чему для каждого типа объекта будет выполнен правильный деструктор.
17. Конструктор копирования
Конструктором копирования называется специальный конструктор в языке программирования C++, применяемый для создания нового объекта как копии уже существующего. Такой конструктор принимает как минимум один аргумент: ссылку на копируемый объект. Обычно компилятор автоматически создает конструктор копирования для каждого класса (известные как неявные конструкторы копирования, т.е. конструкторы копирования, заданные неявным образом), но в некоторых случаях программист создает конструктор копирования, называемый в таком случае явным конструктором копирования (или "конструктором копирования, заданным явным образом"). В подобных случаях компилятор не создает неявные конструкторы. Конструктор копирования в основном необходим когда объект имеет указатель или неразделяемую ссылку, как например, на файл, в этом случае вам обычно также потребуется деструктор и оператор присваивания.