Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 107
- 108
- 109
- 110
- 111
- …
- следующая ›
- последняя »