Программирование на языке высокого уровня. Марапулец Ю.В. - 109 стр.

UptoLike

Составители: 

friend complex operator + (complex c1, complex c2)
{
return complex (c1.real+c2.real,c1.imag+c2.imag);
}
Следует заметить, что введенная таким образом функция для операции сложения
может быть вызвана и явно:
c3=operator+ (с1 ,с2);
За исключением операций new и delete, для которых существуют собственные пра-
вила (далее будут рассмотрены), функции-операции должны быть нестатическими
функциями-членами класса или иметь минимум один аргумент типа класса. Функции-
операции = () [] и -> должны быть нестатическими членами класса.
Переопределение унарных операций. Префиксная или постфиксная унарная опе-
рация может быть переопределен либо путем задания нестатической функции-члена
класса без аргументов или путем определения функции не являющейся членом класса и
имеющей один аргумент. Если @ - есть унарная операция, то @х и х@ интерпретируют-
ся
как x.operator@() или operator@ (x) в зависимости от типа описания.
Отсюда следует, что при переопределении теряется разница между префиксными и
постфиксными унарными операциями. Например:
class X
{
X operator++();
};
Х х, у;
y=++х; // то же, что и у=х++- в этом контексте
Переопределение бинарных операций. Бинарная операция может быть переопре-
делена заданием нестатической функции-члена класса, имеющей один аргумент, или оп-
ределением функции не являющейся членом класса (обычно дружественной), имеющей
два аргумента. Если @ - есть, некоторая бинарная операция, то х@у может быть интер-
претировано как x
.operator@(y) или operator@ (х,у) в зависимости от типа описания.
Переопределение операции присваивания. Операция присваивания может быть
переопределена путем задания нестатической функции-члена класса. Например:
class String
{
String &operator=(String &str);
String (String&);
~String();
}
Переопределение операции вызова (). Вызов функции:
выражение (< список выражений >)
109
friend complex operator + (complex c1, complex c2)
{
      return complex (c1.real+c2.real,c1.imag+c2.imag);
}

    Следует заметить, что введенная таким образом функция для операции сложения
может быть вызвана и явно:

c3=operator+ (с1 ,с2);

     За исключением операций new и delete, для которых существуют собственные пра-
вила (далее будут рассмотрены), функции-операции должны быть нестатическими
функциями-членами класса или иметь минимум один аргумент типа класса. Функции-
операции = () [] и -> должны быть нестатическими членами класса.

      Переопределение унарных операций. Префиксная или постфиксная унарная опе-
рация может быть переопределен либо путем задания нестатической функции-члена
класса без аргументов или путем определения функции не являющейся членом класса и
имеющей один аргумент. Если @ - есть унарная операция, то @х и х@ интерпретируют-
ся как x.operator@() или operator@ (x) в зависимости от типа описания.
      Отсюда следует, что при переопределении теряется разница между префиксными и
постфиксными унарными операциями. Например:

class X
{
      X operator++();
};
…
Х х, у;
y=++х; // то же, что и у=х++- в этом контексте

     Переопределение бинарных операций. Бинарная операция может быть переопре-
делена заданием нестатической функции-члена класса, имеющей один аргумент, или оп-
ределением функции не являющейся членом класса (обычно дружественной), имеющей
два аргумента. Если @ - есть, некоторая бинарная операция, то х@у может быть интер-
претировано как x.operator@(y) или operator@ (х,у) в зависимости от типа описания.

     Переопределение операции присваивания. Операция присваивания может быть
переопределена путем задания нестатической функции-члена класса. Например:

class String
{
      String &operator=(String &str);
      String (String&);
      ~String();
}

     Переопределение операции вызова (). Вызов функции:

выражение (< список выражений >)


                                            109