源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

浅析多维数组的下标重载

  • 时间:2022-08-03 11:08 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:浅析多维数组的下标重载
今天看到有人问,在2维或者多维数组的情况下怎样重载像[][]这样的操作符号。 其实思路也不难啊,只不过是重载2个[]符号而已,并且2个[]的功能各不一样。 第一个[]应该定位行. 最后一个[]应该返回最终数据的引用。 贴一下实现基本功能的代码吧,像越界检测,及其他功能就没写了,只要体现了思路,其他的功能好加。
[u]复制代码[/u] 代码如下:
#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; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部