1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#include <iostream>
using namespace std;
class Matrix{
public:
int m,n;
int *data;
Matrix(int h=1,int w=1){data=new int[(m=h)*(n=w)];}
~Matrix(){delete[]data;}
void print();
int &operator[](int i);
int &operator()(int r,int c);
void operator=(Matrix);
};
////////////////////////////////////////
int &Matrix::operator ()(int r, int c)
{
return data[r*n+c];
}
////////////////////////////////////////
int &Matrix::operator[](int i)
{
return data[i];
}
///////////////////////////////////////
void Matrix::operator=(Matrix A)
{
for(int i=0;i<m*n;i++)
{
(*this)[i]=A[i];
/*cout<<(this)->data[i]<<" "<<A[i]<<endl;*/
//It seems there is no problem!
}
}
///////////////////////////////////////
void Matrix::print()
{
int i,j;
for(i=0;i<m;i++,cout<<endl)
for(j=0;j<n;j++)
cout<<(*this)(i,j)<<" ";
}
////////////////////////////////////////
int main()
{
int i,m,s,t;
Matrix B(3,3),C(3,3),D(3,3);
for(i=0;i<9;i++)
C[i]=5;
cout<<endl<<"C="<<endl;
C.print();
for(i=0;i<9;i++)
B[i]=i;
cout<<endl<<"B="<<endl;
B.print();
B=C;
cout<<endl<<"after!"<<endl<<"B="<<endl;
B.print();
cout<<endl<<"C="<<endl;
C.print();
system ("pause");
return 0;}
|