c++问题,解答附上代码,急求解答!拜托好心人了

2025-04-02 06:20:28
推荐回答(1个)
回答1:

#include 
class CTwoArray
{
      int *ptr; //数组指针,指向二维数组的第一行第一列的元素
      int row; //数组行数
      int col; //数组列数
public:
      CTwoArray(int m,int n);//构造函数
      ~CTwoArray();//析构函数
      CTwoArray(const CTwoArray &a); //拷贝构造函数
      void set();  //从键盘输入数据,给二维数组元素赋值
   CTwoArray operator+(CTwoArray &b);//重载为类的成员函数
   void print(); //输出二维数组元素   
};

CTwoArray::CTwoArray(int m,int n)
{
ptr = new int[m*n];
row = m;
col = n;
}
CTwoArray::~CTwoArray()
{
delete[] ptr;
}
CTwoArray::CTwoArray(const CTwoArray &a)
{
row = a.row;
col = a.col;
ptr = new int[row*col];
}
void CTwoArray::set()
{
for(int i=0;i {
for(int j=0;j {
scanf("%d",ptr+j+i*col);
}
}
}

CTwoArray CTwoArray::operator+(CTwoArray &b)
{
int m = row int n = col CTwoArray obj(m,n);
for(int i=0;i {
for(int j=0;j {
obj.ptr[j+i*col] = ptr[j+i*col] + b.ptr[j+i*col];
}
}
return obj;
}
void CTwoArray::print()
{
for(int i=0;i {
for(int j=0;j {
printf("%d ",ptr[j+i*col]);
}
printf("\n");
}
}
int main()
{
CTwoArray a(3,3);
CTwoArray b(3,3);
printf("Input a:\n");
a.set();
printf("Input b:\n");
b.set();
printf("Output a:\n");
a.print();
printf("Output b:\n");
b.print();
printf("Output a+b:\n");
(a+b).print();

}