- •3. Указатели и ссылки. Указатель this.
- •4. Использование операторов new и delete.
- •5. Понятие классов и экземпляров классов.
- •6. Описание классов(class, struct, union).
- •7. Вложенные классы.
- •8. Определение объектов при помощи классов.
- •9. Конструкторы и деструкторы классов.
- •10. Атрибуты доступа к компонентам классов.
- •11. Объявление и определение методов класса.
- •12. Вызов членов класса.
- •13. Перегрузка конструкторов. Конструкторы копий.
- •14. Перегрузка операторов отношения.
- •15. Перегрузка логических операторов.
- •16. Перегрузка унарных операторов.
- •17. Перегрузка бинарных операторов.
- •18. Функция оператор как член класса и как friend функция.
- •19. Дружественные функции.
- •20. Доступ к компонентам классов в зависимости от атрибутов доступа.
- •21. Введение в наследование. Базовые классы.
- •22. Производные классы.
- •23. Ограничение доступа к элементам класса. Наследование свойств и модификаторы доступа. Одиночное наследование. Доступ к компонентам производных и базовых классов.
- •24. Конструкторы базовых и производных классов.
- •25. Виртуальные базовые классы. Чисто виртуальные функции.
- •26. Использование указателей на базовые классы и производные классы. Виртуальные методы.
- •27. Потоки ввода-вывода.
- •28. Иерархия классов ввода-вывода. Основные уровни иерархии. Классы потоков.
- •29. Стандартные классы, объекты и механизмы консольного ввода/вывода.
- •30. Стандартные классы, объекты и механизмы файлового ввода/вывода.
- •31. Понятие манипулятора. Реализация пользовательских манипуляторов.
- •32. Файлы последовательного доступа и произвольного доступа.
- •33. Понятие шаблона. Шаблоны функций и классов.
13. Перегрузка конструкторов. Конструкторы копий.
Вероятно, наиболее частое использование перегрузки конструктора — это обеспечение возможности выбора способа инициализации объекта. Например, в следующей программе объекту ol дается начальное значение, а объекту о2 — нет. Если вы удалите конструктор с пустым списком аргументов,
программа не будет компилироваться, поскольку у неинициализируемого объекта типа samp не будет конструктора. И наоборот, если вы удалите конструктор с параметром, программа не будет компилироваться, поскольку не будет конструктора у инициализируемого объекта типа samp. Для правильной компиляции программы необходимы оба конструктора.
Конструктор копий используется для создания новых объектов из уже существующих. Это означает, что, так же как для других конструкторов, новый объект еще не существует к моменту его вызова. Однако только конструктору копий объект передается как аргумент по ссылке. Итак, синтаксис конструктора копий прост. Конструктор копий произвольного класса X выглядит так: Х(constX&) Так как конструктор копий - это все таки конструктор, то он должен иметь имя, совпадающее с именем класса (не забывайте – с учетом регистра символов). Назначение конструктора копий - дублирование объекта-аргумента для построения нового объекта.
14. Перегрузка операторов отношения.
Существует возможность перегрузки операторов отношения и логических
операторов. При перегрузке операторов отношения и логических операторов
так, чтобы они вели себя обычным образом, не нужны оператор-функции, возвращающие объект класса, для которого эти оператор-функции определены.
Вместо этого они должны возвращать целое, интерпретируемое как значение true или false. Помимо того, что возвращаемым значением таких оператор функций должно быть значение true или false, должна быть возможность встраивания операторов отношения и логических операторов в большие выражения, включающие также данные других типов.
15. Перегрузка логических операторов.
Существует возможность перегрузки операторов отношения и логических операторов. При перегрузке операторов отношения и логических операторов так, чтобы они вели себя обычным образом, не нужны оператор-функции, возвращающие объект класса, для которого эти оператор-функции определены.
Вместо этого они должны возвращать целое, интерпретируемое как значение true или false. Помимо того, что возвращаемым значением таких оператор-функций должно быть значение true или false, должна быть возможность встраивания операторов отношения и логических операторов в большие выражения, включающие также данные других типов.
