class A
{
int **p;
int row,column,len;
public:
A(int a,int b)
:row(a),column(b)
{
len=row*column;
p=new int *[row];
for (int a=0;a<row;a++)
{
p[a]=new int[column];
}
}
int size(){
return len;
}
int * operator [](const int &i)
{
return p[i];
}
~A()
{
for (int k=0;k<row; k++)
{
delete []p[k];
}
delete []p;
cout<<"delete"<<endl;
}
};
若用一维数组代替二维数组,同样可以做到对象名加两个方括号来访问元素
#include<iostream>
using namespace std;
class A
{
public:
int*p;
int row,column;
A(int i,int j)
{
row=i;
column=j;
p=new int[i*j];
}
int*operator[](int i)
{
return p+i*column;
}
~A()
{
if (p!=NULL)
{
delete[]p;
p=NULL;
}
}
};
void main()
{
A a(2,2);
a[1][0]=3;
cout<<a[1][0];
}