C++ 如何使参数构造函数初始化导致平方矩阵的行和列?

C++ 如何使参数构造函数初始化导致平方矩阵的行和列?,c++,matrix,C++,Matrix,我在创建参数化构造函数以初始化导致平方矩阵的行和列时遇到问题。到目前为止,我已经将行和列初始化为2,并使用新操作符动态分配内存 这是我到目前为止的代码: #include<iostream> using namespace std; class matrix { int row, column; matrix() { row = 2; column = 2; } int **array; ar

我在创建参数化构造函数以初始化导致平方矩阵的行和列时遇到问题。到目前为止,我已经将行和列初始化为2,并使用新操作符动态分配内存

这是我到目前为止的代码:

#include<iostream>
using namespace std;
class matrix {

    int row, column;
    matrix()
    {
        row = 2;
        column = 2;
    }
    int **array;

        array = new int*[row];
        for(int i=0;i<row;i++){
           array[i]=new int[column];
        }
};
#包括
使用名称空间std;
类矩阵{
int行,列;
矩阵()
{
行=2;
列=2;
}
整数**数组;
数组=新整数*[行];
对于(int i=0;i>(istream&,sqMatrix&);

friend ostream&operator我的改进建议:

  • 一般性建议:

    当您想要使用类的成员数据时,最好使用
    this->
    而不是
    sqMatrix::
    。例如,使用

    this->dim = dim;
    
    而不是

    sqMatrix::dim = dim;
    
    当(1)您有一个类的静态成员(这是一种约定,不是必需的)或(2)您需要使用基类的成员,而不是具有相同名称的当前类的成员(这是必需的)时,使用第二种形式

  • 您需要在析构函数中取消分配矩阵

    //Destructor
    sqMatrix::~sqMatrix()
    {
       for(int i=0;i<sqMatrix::dim;i++)
       {
          // delete[] (sqMatrix::matrix)[i];
          // Simplify to:
          delete [] matrix[i];
       }
       delete [] matrix;  // This was a missing line
    }
    
    它的可读性比

    sqMatrix cpy5=test^test4;
    
    当前的实现还受到这样一个事实的影响,即您正在修改第二个参数,即使它是使用
    sqMatrix const&.
    传递的

    sqMatrix sqMatrix::transpose() const
    {
       sqMatrix tmp(this->dim);
       for(int i=0;i<this->dim;i++)
       {
          for(int j=0;j<this->dim;j++)
             tmp.matrix[i][j]=this->matrix[j][i];
       }
       return tmp;
    }
    
    sqMatrix sqMatrix::transpose()常量
    {
    SQP矩阵tmp(此->dim);
    for(int i=0;idim;i++)
    {
    for(int j=0;jdim;j++)
    tmp.矩阵[i][j]=此->矩阵[j][i];
    }
    返回tmp;
    }
    

此代码无法编译。此外,该问题要求使用整数指针,您正在使用指向整数指针的指针。
matric(int dim)
作为b)构造函数的签名应该可以让您开始。
sqMatrix cpy5=test^test4;
sqMatrix sqMatrix::transpose() const
{
   sqMatrix tmp(this->dim);
   for(int i=0;i<this->dim;i++)
   {
      for(int j=0;j<this->dim;j++)
         tmp.matrix[i][j]=this->matrix[j][i];
   }
   return tmp;
}