手机
当前位置:查字典教程网 >编程开发 >C语言 >浅析多维数组的下标重载
浅析多维数组的下标重载
摘要:今天看到有人问,在2维或者多维数组的情况下怎样重载像[][]这样的操作符号。其实思路也不难啊,只不过是重载2个[]符号而已,并且2个[]的功...

今天看到有人问,在2维或者多维数组的情况下怎样重载像[][]这样的操作符号。

其实思路也不难啊,只不过是重载2个[]符号而已,并且2个[]的功能各不一样。

第一个[]应该定位行.

最后一个[]应该返回最终数据的引用。

贴一下实现基本功能的代码吧,像越界检测,及其他功能就没写了,只要体现了思路,其他的功能好加。

复制代码 代码如下:

#include <iostream>

#include <string>

using namespace std;

template <class T> class arr;

template <class T> class arrBody

{

private:

friend class arr<T>;

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<r*c;k++) //初始化数据,默认为0

data[k]=d;

}

public:

T& operator[](int j) //重载第2个[]号

{

if(j>=0&&j<col)

return data[current_row*col+j];

}

~arrBody(){delete[]data;} }; template <class T> class arr

{

private:

arrBody<T> tBody;

public:

arrBody<T> &operator[](int i) //重载第一个[]号

{

if(i>=0&&i<tBody.row)

tBody.current_row=i;

return tBody;

}

arr(int i,int j,T d=0):tBody(i,j,d) {}

};

void main()

{

arr<int> a(10,20);

arr<double> b(5,5);

cout<<a[5][5]<<endl;

}

【浅析多维数组的下标重载】相关文章:

解析如何用指针实现整型数据的加法

memset函数的使用分析

深入分析C++中执行多个exe文件方法的批处理代码介绍

深入C++ 函数映射的使用详解

浅析C++中cout的运行机制

浅析c/c++中函数的参数传递

深入理解大数与高精度数的处理问题

c++ 构造函数的初始化列表

深入分析C++中类的大小

C++按位异或运算符的使用介绍

精品推荐
分类导航