Перегрузка внешней операторной функции

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

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