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<x;i++){
			   p2[i].setdbp(y);
			}
	}
	A& operator[](int x){return p2[x];}
	void operator=(int x){this->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<<endl;
	return 0;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值