写一个二维数组类 Array2
#include <iostream> #include <cstring> using namespace std; class Array2{ private: int m, n; int** p; public: Array2(int _m,int _n) { m = _m; n = _n; p = new int*[m]; for (int i = 0; i < m; i++) { p[i] = new int[n]; } } Array2(){ p = NULL; } Array2 &operator=(Array2 &array2){ if (!p) { for (int i = 0; i < m; i++) { delete[] p[i]; } delete[] p; m = array2.m; n = array2.n; p = new int*[m]; for (int i = 0; i < m; i++) { p[i] = new int[n]; } } else { m = array2.m; n = array2.n; p = new int*[m]; for (int i = 0; i < m; i++) { p[i] = new int[n]; } } for (int i = 0; i < m; i++) { memcpy(p[i], array2[i], n*sizeof(int)); } return *this; } int *operator[](int i){ return p[i]; } int operator()(int i,int j){ return p[i][j]; } }; int main() { Array2 a(3, 4); int i, j; for (i = 0; i < 3; ++i) for (j = 0; j < 4; j++) a[i][j] = i * 4 + j; for (i = 0; i < 3; ++i) { for (j = 0; j < 4; j++) { cout << a(i, j) << ","; } cout << endl; } cout << "next" << endl; Array2 b; b = a; for (i = 0; i < 3; ++i) { for (j = 0; j < 4; j++) { cout << b[i][j] << ","; } cout << endl; } return 0; }