Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
225.79 Кб
Скачать

13. Перегрузка конструкторов. Конструкторы копий.

Вероятно, наиболее частое использование перегрузки конструктора — это обеспечение возможности выбора способа инициализации объекта. Например, в следующей программе объекту ol дается начальное значение, а объекту о2 — нет. Если вы удалите конструктор с пустым списком аргументов,

программа не будет компилироваться, поскольку у неинициализируемого объекта типа samp не будет конструктора. И наоборот, если вы удалите конструктор с параметром, программа не будет компилироваться, поскольку не будет конструктора у инициализируемого объекта типа samp. Для правильной компиляции программы необходимы оба конструктора.

Конструктор копий используется для создания новых объектов из уже существующих. Это означает, что, так же как для других конструкторов, новый объект еще не существует к моменту его вызова. Однако только конструктору копий объект передается как аргумент по ссылке. Итак, синтаксис конструктора копий прост. Конструктор копий произвольного класса X выглядит так: Х(constX&) Так как конструктор копий - это все таки конструктор, то он должен иметь имя, совпадающее с именем класса (не забывайте – с учетом регистра символов). Назначение конструктора копий - дублирование объекта-аргумента для построения нового объекта.

14. Перегрузка операторов отношения.

Существует возможность перегрузки операторов отношения и логических

операторов. При перегрузке операторов отношения и логических операторов

так, чтобы они вели себя обычным образом, не нужны оператор-функции, возвращающие объект класса, для которого эти оператор-функции определены.

Вместо этого они должны возвращать целое, интерпретируемое как значение true или false. Помимо того, что возвращаемым значением таких оператор функций должно быть значение true или false, должна быть возможность встраивания операторов отношения и логических операторов в большие выражения, включающие также данные других типов.

15. Перегрузка логических операторов.

Существует возможность перегрузки операторов отношения и логических операторов. При перегрузке операторов отношения и логических операторов так, чтобы они вели себя обычным образом, не нужны оператор-функции, возвращающие объект класса, для которого эти оператор-функции определены.

Вместо этого они должны возвращать целое, интерпретируемое как значение true или false. Помимо того, что возвращаемым значением таких оператор-функций должно быть значение true или false, должна быть возможность встраивания операторов отношения и логических операторов в большие выражения, включающие также данные других типов.