Задание
На основе абстрактного базового класса, реализовать контейнер динамических объектов, выполнить перегрузки основных операций для металлической сетки, таким образом, чтобы они вели себя подобно встроенных стандартных типов. Основные операции (=, отношение, арифметические операции).
Выбор алгоритма решения задачи
Для решения этой задачи необходимо создать абстрактный базовый класс. И производный от него класс управления данными, не обязательно динамических объектов, так как алгоритм и структура одинакова. Перегруженные операторы, такие как отношение, арифметические и так далее, необходимо указать, а затем описать, что они будут делать.
Описание решения задачи
Для этого выберем абстрактный базовый класс: class Employee. В нем опишем перегрузки операторов, например «+»: friend Employee & operator + (Employee &, Employee &. В походном классе опишем действие перегруженного оператора «+».

friend complex operator+ (complex &i, complex &_i)
 {complex R(0,0);
 R.re = i.re + _i.re; R.im = i.im + _i.im;
 return R;
 }
листинг кода
1. Base.h

#ifndef BASE_H
#include "iostream.h"
#include "string.h"
#include "assert.h"
#define BASE_H

class Employee {
public:
Employee (void) {};

 friend Employee & operator+ (Employee &, Employee &) ;
friend bool operator== (Employee &,Employee &);
friend Employee & operator- (Employee &, Employee &) ;
friend ostream & operator<< (ostream & o, Employee &) ;
friend istream & operator>> (istream & o, Employee &) ;
};
#endif
2. Cint.h

#include "iostream.h"
#include "base.h"

class complex : public Employee {
int re;
int im;
public:
complex (int r, int j) { re = r; im = j; }

 friend ostream &operator<< (ostream & o, complex &i) {
return o << i.re << " " << i.im<> (istream & o, complex &i)
{return o >> i.re >>i.im;}

 friend complex operator+ (complex &i, complex &_i)
{complex R(0,0);
R.re = i.re + _i.re; R.im = i.im + _i.im;
return R;
}

 friend bool operator== (complex &i,complex &_i)
{ if (i.re == _i.re && i.im == _i.im) 
return true;
else return false;
}

 friend complex operator- (complex &i, complex &_i)
{ complex R1(0,0);
R1.re = i.re - _i.re; R1.im = i.im - _i.im;
return R1;
}
};
3. Main.cpp

#include "iostream.h"
#include "iomanip.h"
#include "conio.h"
#include "BASE.h"
#include "Cint.h"

int main()
{
complex A1(0,0);
complex A2(0,0);

cout << "Vvedite - 2 raza 2 chisla: \n";

cin >> A1;
cin >> A2;

cout <<"Perviy masiv А1= " << A1<<'\n';
cout <<"Vtoroy masiv А2= " << A2<<'\n';

 cout << "a1 + a2: " << A1 + A2 << endl;
cout << "a1 - a2: " << A1 - A2 << endl;

 A1 = A2;
cout <<"A1 = А2: "<< A1 <
результат работы


 Похожие публикации
2015-06-29 • Просмотров [ 240 ]