#include #include #include using namespace std; class Matrix { public: Matrix(ifstream &is); Matrix(); ~Matrix(); Matrix *multiply(Matrix &rhs) const; void print(ostream &os) const; void clone(Matrix &src); private: int m_nRows; int m_nColumns; double m_data[40][40]; }; Matrix::Matrix() : m_nRows(0), m_nColumns(0) { } Matrix::Matrix(ifstream &is) { int ir, ic; is >> m_nRows >> m_nColumns; for (ir=0; ir> m_data[ir][ic]; } Matrix::~Matrix() { } Matrix *Matrix::multiply(Matrix &rhs) const { if (m_nColumns != rhs.m_nRows) return 0; int ir, ic, ip; Matrix *c=new Matrix; c->m_nRows = m_nRows; c->m_nColumns = rhs.m_nColumns; for (ir=0; irm_nRows; ir++) for (ic=0; icm_nColumns; ic++) { c->m_data[ir][ic] = 0; for (ip=0; ipm_data[ir][ic] += m_data[ir][ip] * rhs.m_data[ip][ic]; } return c; } void Matrix::print(ostream &os) const { int ir, ic; os << " # rows=" << m_nRows << " # columns=" << m_nColumns << endl; for (ir=0; irprint(cout); Matrix matD; matD.clone(*matC); cout << "The copy of matrix C is " << endl; matD.print(cout); delete matC; }