Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Stroka Z;

Void print ( void) void print ( void) | Void main ( ) | Complex c1; |


Z=X+Y + " Нет войне!";// эквивалентно Z =operator + (X,Y);

// Z = operator + (Z, " Нет войне!");

Z.vivod(); }

В предпоследней строке происходит автоматическое преобразование типа строки “ Нет войне” к типу stroka, то есть создается безвмянный временный объект.

Если бы мы использовали функцию-операцию, представленную как компонентную и строка “ Нет войне” стояла бы на первом месте, то компилятор рассматривая ее как объект, для которого вызывается функция операция, вывел бы сообщение об ошибке (illegal structure operation).

Таким образом, дружественные функции – операции позволяют правильно произвести преобразование типа.

 

Рассмотрим еще несколько важных особенностей механизма перегрузок (расширения действия) стандартных операций С++:

1) C++ запрещает вводитьоперации с новым обозначением.

2) Нельзя изменить приоритет стандартной операции, перегрузив ее.

3) Нельзя изменять арность операции.

4) Перегрузка бинарной операции определяется либо как компонентная функция класса с одним параметром, либо как внешняя функция, возможно дружественная, с двумя параметрами:

выражение: X <операция>Y

 

соответствует вызовам:

X. operator <операция> (Y) // если операция-функция -метод класса

или:

operator <операция> (X, Y) // если операция-функция -внешняя

5) Перегрузка унарной операции определяется либо как компонентная функция без параметра, либо как внешняя функция, возможно дружественная, с одним параметром:

 

выражение: <операция> X

 

соответствует вызовам:

X. operator <операция> () // если операция-функция -метод класса

или:

operator <операция> (X) // если операция-функция –внешняя

 

 

Рассмотрим перегрузку унарной операции “–“ для класса “вектор”:


Дата добавления: 2015-07-19; просмотров: 41 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Перегрузка стандартных операций| V.vivod

mybiblioteka.su - 2015-2024 год. (0.006 сек.)