На экране
Class matr
{
float *x;
int n,m;
public:
matr(int, int);
matr (matr& f);
void vvod();
void ww();
friend matr operator+(matr& ob1, matr& ob2);
matr& operator=(matr& ob2);
~matr();
};
//==============================================
//конструктор с параметрами
matr::matr(int _n, int _m)
{ n=_n; m=_m;
x=new float [n*m];
puts("\n работал конструктор ");
}
//==============================================
//конструктор копии
matr::matr(matr& f)
{
n=f.n;
m=f.m;
x=new float [n*m];
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
*(x+i*m+j)=*(f.x+i*f.m+j);
cout <<" работал конструктор копии ";
}
//==============================================
//функция ввода численных данных
void matr::vvod()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
*(x+i*m+j)=5+random(10);
}
//==============================================
//деструктор
matr::~matr ()
{
delete[]x;
puts("\n работал деструктор");
}
//==============================================
//глобальная операторная функция переопределения //операции +
matr operator+(matr& P1, matr& P2)
{
matr rez(P1.n, P1.m);
puts("\n rez dla + ");
for(int i=0;i<rez.n;i++)
for(int j=0;j<rez.m;j++)
*(rez.x +i*rez.m+j)=*(P1.x+i*P1.m+j)+*(P2.x+i*P2.m+j);
return rez;
}
//операторная функция переопределения операции =
matr& matr::operator=(matr& P2)
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
*(x+i*m+j)=*(P2.x+i*P2.m+j);
return * this;
}
//функция-член печати матрицы
void matr::ww()
{
for(int i=0;i<n;i++)
{
cout<<"\n" ;
for(int j=0;j<m;j++)
cout<< *(x+i*m+j)<<" "; }
}
//==================================
//основная программа
void main()
{
matr P1(3,4);
P1.vvod();
P1.ww();
matr P2(3,4);
P2.vvod();
P2.ww();
matr P3(3,4);
P3=P1+P2;
P3.ww();
}
rabotal konstruktor
5 5 8 5
10 6 12 14
6 11 10 5
rabotal konstruktor
11 12 13 14
14 13 14 13
11 10 10 12
rabotal konstruktor
rabotal konstruktor
rabotal konstruktor kopii
rabotal destruktor
rabotal destruktor
16 17 21 19
24 19 26 27
17 21 20 17
rabotal destruktor
rabotal destruktor
rabotal destruktor