- •Управляющие структуры
- •Массивы
- •Рекурсия. Макросы. Уловная компиляция
- •Операторы для работы с указателями
- •Присваивание указателей
- •Объектно-ориентированные модели. Составные части объектного подхода
- •Форматирование ввод/вывод
- •Использование манипулятора
- •Конструкторы и деструкторы
- •Множественное наследование
- •Полиморфизм, реализация полиморфизма через наследование
- •Перегрузка бинарных операторов
Перегрузка бинарных операторов
Когда оператор-функция перегружает бинарный оператор, у неё будет только один параметр. Данный параметр получит тот объект, который располагается справа от оператора, объект слева генерирует вызов оператора функции и передается неявно с помощью указателя this :
Class coord
{ int x,y;
Public:
coord(){x=0;y=0;}
coord(int I,int j)
{x=I,y=j;}
Void get_xy (int &I,int &j)
{i=x;j=y;
Coord operator +(coord ob2);
};
Coord coord:: operator +(coord ob2)
{coord temp;
Temp.x = x+ob2.x;
Temp.y = y +ob2.y;
Return temp;
}
Int main ()
{ coord ob1(10,10), ob3(5,3), ob4;
Int x,y;
Ob4= ob1+ ob3;
Ob4.get_xy (x,y);
Cout<<” (ob1+ob3)x: “<<x<<”,y: “<<y<<endl;
Return 0;
}
Перегрузка унарных операторов аналогична перегрузке бинарных за исключение того, что мы имеем дело с одним оператором. При реализации оператора функции у неё не будет параметров, т.к. имеется только один операнд, который и генерирует вызов
Class coord
{ int x,y;
Public:
coord(){x=0;y=0;}
coord(int I,int j)
{x=I,y=j;}
Void get_xy (int &I,int &j)
{i=x;j=y;
Coord operator +(coord ob2);
};
Coord coord:: operator ++
{x++;
Y++;
Return *this;
}
Int main ()
{ coord ob1(10,10);
Int x,y;
++ob1;
Ob1.get_xy(x,y);
Cout<<” x: “<<x<<”,y: “<<y<<endl;
Return 0;
}