Переопределение оператора методом класса

Операторная функция, с помощью которой перегружается оператор, может быть внутренней, то есть являться методом класса. Принципиально ситуа­ция мало отличается от рассмотренных ранее, однако есть ряд особенностей, главная из которых связана со способом передачи аргументов такой функции. Строго говоря, драматические изменения происходят только с количеством аргументов в операторных функциях - при перегрузке бинарных операто­ров функции передается один аргумент, а при перегрузке унарных опера­торов функции аргументы не передаются (за исключением, пожалуй, пере­рузки префиксной формы операторов инкремента и декремента). Причина связана с тем, что один аргумент внутренней операторной функции - объект, из которого вызывается эта функция Доступ к этому объекту, в случае необходимости, можно получить через указатель В качестве иллю­страции рассмотрим, как будет выглядеть процедура перегрузки оператора сло­жения, если перегрузка осуществляется методом класса. Программный код приведен ниже.
#include
using namespace std;
//Класс для реализации комплексных чисел:
class MComp{
public:
double Re;
double Im;
//Переопределение оператора сложения методом класса:
MComp operator+(MComp y){
MComp z;
z.Re=Re+y.Re;
z.Im=Im+y.Im;
return z;}
};
int main(){
MComp a,b,c;
a.Re=1;
a.Im=2;
b.Re=2;
b.Im=3;
//Сложение объектов:
c=a+b;
cout << "c.Re = " << c.Re << "\n";
cout << "c.Im = " << c.Im << "\n";
return 0;
}
Онлайн всего: 54
Гостей: 54
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте