Программирование на С++. Рейзлин В.И. - 46 стр.

UptoLike

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

48
первом случае xy означает вызов x.operator(y), во втором вызов
operator (x,y).
Операции, перегружаемые внутри класса, могут перегружаться
только нестатическими компонентными функциями с параметрами. Вызы-
ваемый объект класса автоматически воспринимается в качестве первого
операнда.
Операции, перегружаемые вне области класса, должны иметь два
операнда, один из которых должен иметь тип класса.
Примеры.
1) class person{…};
class adresbook
{ // содержит в качестве компонентных данных множество объектов
типа //person, представляемых как динамический массив, список или
дерево
public:
person& operator[](int); //доступ к i-му объекту
};
person& adresbook : : operator[](int i){. . .}
void main()
{class adresbook persons;
class person record;
record = persons [3];
}
2) class person{…};
class adresbook
{ // содержит в качестве компонентных данных множество объектов
типа//person, представляемых как динамический массив, список или дерево
public:
friend person& operator[](const adresbook&,int);//доступ к i-му объекту
};
person& operator[](const adresbook& ob ,int i){. . .}
void main()
{class adresbook persons;
class person record;
record = persons [3];}