求教!先谢谢各位帮忙。
我写了个矩阵相乘的程序,重载运算符*为成员,那么this 指针能这样吗?
#include <iostream.h>
class matrix
{
public:
matrix();
matrix(int rr,int cc);
matrix(&ma);
~matrix();
void input();
void display();
matrix operator*(matrix&m);
float *getele(){return element;}
int getr(){return rowno;}
int getc(){return colno;}
private:
int rowno,colno;
float *element;
}
matrix::matrix(int rr,int cc)
{
rowno=rr;colno=cc;
element=new float[rr*cc];
}
matrix::matrix(&ma)
{
rowno=ma.rowno;
colno=ma.colno;
element=new float[ma.rowno*ma.colno];
}
matrix::~matrix()
{
delete[]element;
}
void matrix::input()
{
for(int i=0;i<rowno*colno;i++)
cin>>*(element+i);
}
void matrix::display()
{
for(int i=0;i<rowno;i++)
for(int j=0;j<colno;j++)
cout<<" "<<*(element+i*rowno+j)<<endl;
}
matrix matrix::operator*(matrix&m)
{
matrix result(rowno,m.getc());
for(int i=0;i<rowno;i++)
{
for(int k=0;k<m.getc();k++)
{
for(int j=0;j<colno;j++)
*(result.getele()+m.getc()*i+k)+=
(*(element+colno*i+j))*(*(m.getele()+m.getc()*j+k));
}
}
return result;
}
void main()
{
int row1No,col1No,col2No;
cout<<"Enter the row number of the first matrix:";
cin>>row1No;
cout<<"Enter the column number of the first matrix:";
cin>>col1No;
cout<<"Enter the column number of the second matrix:";
cin>>col2No;
matrix m1(row1No,col1No),m2(col1No,col2No),m3;
m1.input();
m2.input();
m1.display();
m2.display();
m3=m1*m2;
m3.display();
}