#include<iostream>
using namespace std;
class CArray
{
int n, m;
int** data;
public:
CArray(){}
CArray(int nValue, int mValue) :n(nValue), m(mValue)
{
data = new int* [n];
for (int i = 0; i < n; i++)
data[i] = new int[m];
}
~CArray()
{
//for (int i = 0; i < n; i++)
// delete []data[i];
//delete[]data;
}
int* & operator [](int i)
{
return this->data[i];
}
int& operator ()(int i, int j)
{
return this->data[i][j];
}
};
int main()
{
int t;
int n, m;
int i, j;
cin >> t;
while (t--)
{
cin >> n >> m;
CArray matrixA(n, m);
for (i = 0; i < n; ++i)
for (j=0;j<m;j++)
cin >> matrixA[i][j];
cout << "MatrixA:" << endl;
for (i = 0; i < n; ++i)
{
for (j = 0; j < m; j++)
{
cout << matrixA(i, j) << " ";
}
cout << endl;
}
cout << "MatrixB:" << endl;
CArray matrixB;
matrixB = matrixA;
for (i = 0; i < n; ++i)
{
for (j = 0; j < m; j++)
{
cout << matrixB[i][j] << " ";
}
cout << endl;
}
}
return 0;
}
析构函数内容用注释标记,加了过后程序的循环只能运行一次,然后就退出了,交到oj上的结果是运行时异常,搜了一下也没有太懂,希望能有大佬帮忙解答,谢谢
因为你的CArray的函数只是对new的指针对象进行浅拷贝,所有对象共享了这个指针指向的空间。一旦有一个析构,就会释放zh这块共享空间,导致其它指针成为野指针了
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632