用C++写实现一个类层次管理整数数组,基类intArray为一维数组,派生类Maxtrix为二维数组,Array3D为三维数组。请参照基类intArray的定义,完成派生类Matrix和Array3D的定义。其中intArray定义如下: class intArray{ public: intArray(int count) { ar=new int[count]; n=count; } int & elem(int i) { return ar[i]; } void print( ) { int i; for(i=0;i<n;i++) cout<<ar[i]<< " "; } protected: int *ar; int n; //代表元素个数 };
时间: 2023-06-18 19:05:32 浏览: 124
C++基类指针和派生类指针之间的转换方法讲解
以下是派生类Matrix和Array3D的定义,其中Matrix是二维数组,Array3D是三维数组。
```cpp
// 派生类 Matrix,表示二维数组
class Matrix : public intArray {
public:
Matrix(int row, int col) : intArray(row * col) {
this->row = row;
this->col = col;
}
int& elem(int i, int j) {
return ar[i * col + j];
}
void print() {
int i, j;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
cout << elem(i, j) << " ";
}
cout << endl;
}
}
private:
int row; // 行数
int col; // 列数
};
// 派生类 Array3D,表示三维数组
class Array3D : public intArray {
public:
Array3D(int dim1, int dim2, int dim3) : intArray(dim1 * dim2 * dim3) {
this->dim1 = dim1;
this->dim2 = dim2;
this->dim3 = dim3;
}
int& elem(int i, int j, int k) {
return ar[i * dim2 * dim3 + j * dim3 + k];
}
void print() {
int i, j, k;
for (i = 0; i < dim1; i++) {
for (j = 0; j < dim2; j++) {
for (k = 0; k < dim3; k++) {
cout << elem(i, j, k) << " ";
}
cout << endl;
}
cout << endl;
}
}
private:
int dim1; // 维度 1
int dim2; // 维度 2
int dim3; // 维度 3
};
```
阅读全文