c++通过运算符[]重载实现一重和二重数组:我们常用的数组都是c++自己定义的,近来,由于做项目的原因,自己通过运算符的重载,自己又重新写了一个,一维和二维数组。下面贴上代码:
class A{
int row,col; //记录行号和列号
int data; //存储数据
A* p2; //分配内存
public:
///////////////////其对应的构造函数///////////////////
A():p2(NULL){}
A(int x,int y=0):row(x),col(y){
p2=new A[x];
if(y!=0)
for(int i=0;i
data=x;
}
void setdbp(int m){p2=new A[m];} //新建多维数组
int operator!(){ return this->data; } //获取数组对应的值
/////////////////////数组数值的基本操作///////////////////////
int operator+(int x){return (this->data+x);}
int operator+(A a){return (this->data+a.data);}
int operator-(int x){return (this->data-x);}
int operator-(A a){return (this->data-a.data);}
int operator*(int x){return (this->data*x);}
int operator*(A a){return (this->data*a.data);}
double operator/(int x){return (this->data/x);}
double operator/(A a){return (this->data/a.data);}
~A(){
if(p2) delete[] p2;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
/////////////////////////对一二维数组的操作/////////////////////////
A a(3,5);
for(int i=0;i<3;i++)
for(int j=0;j<5;j++)
a[i][j]=3*i+j;
printf("%d ",!a[0][4]);
cout<
?