Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Для перегрузки операций используется ключевое слово operator. Прототип перегруженной операции:
тип_возвращаемого значения operator символ оператора (операнды) { тело _ функции };
Перегружать операции можно с помощью:
· функции-члена;
· функции-друга;
· глобальной функции (как правило, менее эффективно).
Можно перегружать любые операции языка С++, кроме следующих операций:
·. – операция выбора члена класса
·:: – операция разрешения области видимости
·?: – условная операция (например, j = i>0? 1: 0;)
·.* – операция разыменования указателя на член класса
· # – директива препроцессора
· sizeof
· typeid
При перегрузке операции с помощью метода класса число формальных параметров оказывается на единицу меньше числа фактических операндов операции. В этом случае первый операнд операции соответствует объекту типа класса, в котором перегружается операция. В случае бинарной операции входной параметр соответствует второму операнду перегружаемой операции.
При перегрузке операции с помощью функции-друга число формальных параметров совпадает с числом операндов операции, так как в этом случае операнды операции, представленные формальными параметрами, являются внешними объектами для такой функции.
Тип выходного параметра является встроенным типом или типом, определенным пользователем (то есть классом).
Если при перегрузке операции методом класса результатом применения операции является изменение первого (или единственного) операнда, то рекомендуется объявлять выходной параметр в виде ссылки на текущий объект. Это необходимо для оптимизации использования результата операции в других операциях, совмещенных в одном операторе, например: z = x += y;
Если при перегрузке операции функцией-членом результатом применения перегружаемой операции является вычисление значения, не изменяющего первый операнд, а также при перегрузке операции функцией-другом, выходной параметр не может быть ссылкой (если выходной параметр требуется). Это связано с тем, что вычисляемое значение помещается во временный объект, который уничтожается при завершении работы алгоритма перегруженной операции и выходе из области видимости этого временного объекта.
Перегрузка операции присваивания может быть произведена только методом класса и не может быть перегружена функцией-другом.
В отличие от операции присваивания операция ‘+=’ (и другие подобные операции) может быть перегружена как методом класса, так и функцией-другом.
Прототип перегрузки операции присваивания:
X & operator = (const X &); или X & operator = (X&);
Операцию следует перегружать функцией членом того класса, который является типом первого операнда. Если первый операнд имеет встроенный или библиотечный тип, в описание которого невозможно вставить описание дружественной функции, то такую операцию можно перегружать только функцией-другом класса, к которому относится второй операнд [8-9].
Перегрузка операции вывода
В файле внешней стандартной библиотеки iostream стандартная операция языка ‘ << ’, осуществляющая побитовый сдвиг, перегружена в классе ostream как операция вывода. Операция ‘ << ’перегружена для вывода объектов стандартных типов: int, char, double, char* – и других встроенных типов. Формат использования данной операции:
cout << переменная_стандартного_типа;
Таким образом, первый операнд операции ‘ << ’должен иметь тип ostream. Если необходимо перегрузить данную операцию для структурированного вывода объекта астрактного пользовательского типа, то это можно сделать только функцией-другом разработанного класса. Она должна иметь два аргумента. Один типа ссылки на объекты класса ostream, а другой ссылка на объект класса, для которого нужно перегрузить эту операцию. Код возврата должен иметь тип ссылки на объект класса ostream. Код этой оператор-функции должен обеспечивать вывод требуемых полей класса как данных стандарного типа [8-9].
Перегрузка унарных операций
Если для унарной операции имеется только одна форма, то ее перегрузка реализуется по общим описанным выше правилам. При этом, как уже было описано, для оптимизации использования результата операции в других операциях, совмещенных в одном операторе с данной операцией, рекомендуется объявлять выходной параметр в виде ссылки на текущий объект.
При перегрузке унарной операции в том случае, если для нее в языке определены две формы – префиксная и постфиксная, имеются особенности.
Для того чтобы отличать постфиксную форму от префиксной, при перегрузке операции в постфиксной форме в списке формальных параметров указывается дополнительный, неиспользуемый в алгоритме операции, параметр (точнее, тип параметра).
Операция индексирования является бинарной: ее операнды – объект с нумерованными элементами (массив, вектор и т. д.) и целое число – индекс элемента.
|
|
|
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!