//构造一个n*n的单位矩阵
Matrix::Matrix(unsigned long n)
{
m_row=n;
m_column=n;
m_p=new double[n*n]; //申请n*n的空间
for(unsigned long i=0;i!=m_row;++i)
{
for(unsigned long j=0;j!=m_column;++j)
{
if(i==j)
*(m_p+m_column*i+j)=1.0;
else
*(m_p+m_column*i+j)=0.0;
}
}
}
//析构函数
Matrix::~Matrix()
{
delete []m_p;
}
Matrix& Matrix::operator*(Matrix& mat2)
{
assert(m_column==mat2.m_row);
Matrix res(m_row,mat2.m_column);
for(unsigned long i=0;i!=m_row;++i)
{
for(unsigned long j=0;j!=mat2.m_column;++j)
{
*(res.m_p+res.m_column*i+j)=0.0;
for(unsigned long t=0;t!=m_column;++t)
*(res.m_p+res.m_column*i+j)+=*(m_p+m_column*i+t)*mat2[t][j];
}
}
return res;
}
在重载*的函数中创建一个Matrix对象,最后返回该对象,当函数结束Matrix对象销毁时,对象的数据成员m_p被释放,它里边的内容就会不存在了,这个问题应该怎么解决??? |