Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Stroka Z;



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) // если операция-функция –внешняя

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





Дата публикования: 2014-11-28; Прочитано: 275 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.058 с)...