Высокоуровневые методы информатики и программирования. Тузовский А.Ф. - 79 стр.

UptoLike

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

79
public static Complex operator +(Complex c1,Complex c2)
{...}
Не все операции могут быть перегружены, а для некоторых опе-
раций есть ограничения (табл. 4.2).
Таблица 4.2.
Возможность перегрузки операций в классах
Операции
Возможность описания
+, -, !, ~, ++,
--, true, false
эти унарные операции можно перегрузить;
+, -, *, /, %,
&, |, ^, <<, >>
эти бинарные операции можно перегрузить;
==, !=, <, >,
<=, >=
операции сравнения можно перегрузить, но только
парами: если операция == перегружена, то также
должна быть перегружена операция != наоборот);
то же самое и для операций < и >, а также <= и >=;
&&, ||
условные логические операции нельзя перегрузить, но
они вычисляются с помощью операций & и |, которые
могут быть перегружены;
[]
операцию индексирования массива нельзя перегру-
зить, но можно описать индексатор класса;
()
операцию приведения типов нельзя перегрузить, но
можно описать новые операции преобразования типов
(explicit и implicit);
+=, -=, *=, /=,
%=, &=, |=, ^=,
<<=, >>=
операции присвоения нельзя перегрузить, но, напри-
мер, += вычисляется с помощью операции +, которая
допускает перегрузку;
=, ., ?:, ->,
new, is, sizeof,
typeof
эти операции перегружать нельзя!
Перегрузки в классе операций позволяют записывать выражения с
использованием объектов данного класса, аналогичные арифметиче-
ским и условным выражениям с обычно применяемыми знаками опера-
ций и сохранением приоритетов операций.
Пример перегрузки операции сложения:
public struct Point {
float x,y;
// overloaded operator +
public static Point operator +(Point p1,Point p2)
{ return new Point(p1.x + p2.x, p1.y + p2.y); }
}