|
Программирование >> Расширенная версия языка c++
Глава 6 Введение в перегрузку операторов В этой главе рассматривается очередное важное свойство C++: перегрузка операторов. Это свойство позволяет определять значение операторов C++ относительно задаваемых вами классов. Путем перегрузки связанных с классами операторов можно легко добавлять в программу новые типы данных. Повторение пройденного! Перед тем как продолжить, необходимо правильно ответить на следующие вопросы и сделать упражнения. 1. Покажите, как перегрузить конструктор для следующего класса так, чтобы можно было создавать не только инициализируемые, но и неини-циализируемые объекты. (При создании таких объектов присвойте переменным х и у значение 0.) class myclass { . м. . int х,у; г public: niyclas.s (inti, int j) ( x i; у = j; } ......... ,. , . , 2. Используя класс из вопроса 1, покажите, как с помощью аргументов по умолчанию можно избежать перегрузьси конструктора myclass(). 3. Что неправильно в следующем объявлении? in int а = О, double balance) ; 4. Что неправильно в следующих двух перегруженных функциях? voi t а) ; void f(int &a); 5. Когда удобнее использовать аргументы по умолчанию? Когда этого лучше не делать? j76 - Самоучитель С++ в. Дано следующее определение класса. Возможно ли динамически выделить память для массива объектов такого типа? -* class test { char *p; Ч, int *q; int count; public: test (char *x, int *y, int c) { . - . p = x; cl)unt = c; и , 7. Что такое конструктор копий и при каких условиях он вызывается? ,., . 6.1. Основы перегрузки операторов Перегрузка операторов напоминает перегрузку функций. Более того, перегрузка операторов является фактически одним из видов перегрузки функций. Однако при этом вводятся некоторые дополнительные правила. Например, оператор всегда перегружается относительно определенного пользователем типа данных, такого, как класс. Другие отличия будут обсуждаться ниже по мере необходимости. Когда оператор перегружается, то ничего из его исходного значения не теряется. Наоборот, он приобретает дополнительное значение, связанное с классом, для которого оператор был определен. Для перегрузи! оператора создается оператор-функция (operator function). Чаще всего, оператор-функция является членом класса или дружественной классу, для которого она определена. Однако есть небольшая разница между оператор-функцией - членом класса и дружественной оператор-функцией.. В первой части этой главы обсуждается создание оператор-функций - членов класса. О дружественных оператор-функциях будет рассказано далее в этой главе. Здесь представлена основная форм -функции - члена класса: возвращавмчи тип 1огя хллсса.: : opera to (список аргументов) виполнявмая операция Часто типом возвращаемого значения является класс, для которого она определена. (Хотя оператор-функция может возвращать данные любого типа.) В представленной общей форме оператор-функции вме-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |