今天看到有人问,在2维或者多维数组的情况下怎样重载像[][]这样的操作符号。
其实思路也不难啊,只不过是重载2个[]符号而已,并且2个[]的功能各不一样。
第一个[]应该定位行.
最后一个[]应该返回最终数据的引用。
贴一下实现基本功能的代码吧,像越界检测,及其他功能就没写了,只要体现了思路,其他的功能好加。
复制代码 代码如下:
#include
#include
using namespace std;
template
template
{
private:
friend class arr
T* data;
int row,col,current_row;
arrBody(int r,int c,T d):row(r),col(c)
{
data=new T[r*c];
current_row=-1;
for(int k=0;k
}
public:
T& operator[](int j) //重载第2个[]号
{
if(j>=0&&j
}
~arrBody(){delete[]data;} }; template
{
private:
arrBody
public:
arrBody
{
if(i>=0&&i
return tBody;
}
arr(int i,int j,T d=0):tBody(i,j,d) {}
};
void main()
{
arr
arr
cout<}



