本题考点是在类中实现搭建二维数组,同时对[],()运算符实现重载
挺有意思的,好玩的地方在于,[]只需重载一次,第二次是不需要重载的
代码如下
#include <iostream>
#include <cstring>
using namespace std;
class Array2 {
// 在此处补充你的代码
public:
int x,y;//维度
int **pa;
Array2(int x_=0,int y_=0):x(x_),y(y_){//二维数组的搭建
pa=new int *[x];
for(int i=0;i<x;++i){
pa[i]=new int [y];
}
}
int * operator[](int i){
return pa[i];
}
int operator()(int i,int j){
return pa[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;
}
//system("pause");
return 0;
}