返回首页

看到这个网上,看起来就像结构,我想在我的代码使用,但我希望扩大这一做* 20的矩阵操作to20 - ,/,*我有一个基类,电气类...

class Matrix

     {

      public:

             Matrix(float m11=0, float m12=0, float m21=0, float m22=0);

             Matrix(const Matrix &m);

 

             virtual  Matrix() {delete[] d;};

 

             Matrix operator+(const Matrix &m) const;

             Matrix& operator=(const Matrix &m);

 

             float &c(int i, int j) const {return d[2*(i-1)+(j-1)];};

 

      private:

              float *d;

       };

 



 

class DiagonalMatrix : public Matrix

     {

      public:

            DiagonalMatrix() {};

            DiagonalMatrix(float d1, float d2) {c(1,1) = d1; c(2,2) = d2;};

     };

 



 



Matrix::Matrix(float m11, float m12, float m21, float m22)

      {

        d = new float[2*2];

        c(1,1)=m11; c(1,2)=m12; c(2,1)=m21; c(2,2)=m22;

       }

 

Matrix::Matrix(const Matrix &m)

       {

        d = new float[2*2];

        for (int i=0 ; i<2 ; i++)

        for (int j=0 ; j<2 ; j++)

        c(i,j) = m.c(i, j);

}

 



 



Matrix Matrix::operator+(const Matrix &q) const

{

Matrix r;

 

for (int i=1 ; i<=2 ; i++)

for (int j=1 ; j<=2 ; j++)

r.c(i,j) = c(i,j) += q.c(i,j);

 

return r;

}

 

Matrix& Matrix::operator=(const Matrix &q)

{

for (int i=1 ; i<=2 ; i++)

for (int j=1 ; j<=2 ; j++)

c(i,j) = q.c(i,j);

 

return *this;

}
{C}| carlmack

回答