麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

淺析多維數組的下標重載

2020-01-26 15:51:52
字體:
來源:轉載
供稿:網友

今天看到有人問,在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;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 久久成人免费观看 | 性爱视频免费 | 在线视频观看成人 | 激情小说激情电影 | 精品国产91久久久 | 91av在线免费| 亚洲精品 欧美 | 欧美成人午夜 | 亚洲精品一区二区三区大胸 | 久久不射电影 | 最近免费观看高清韩国日本大全 | 成年人网站视频免费 | 49vvv| 91久久国产露脸精品国产 | 国产精品1区2区在线观看 | 免费黄色短视频网站 | 亚洲国产视频在线 | 国产精品久久久久久久久久尿 | 制服丝袜日日夜夜 | 欧美日韩视频在线播放 | 97porn| 看国产一级毛片 | 国产精品午夜未成人免费观看 | 91av99| 羞羞视频免费观看网站 | 日韩视频一区二区在线观看 | 久久成人福利 | 色欲香天天天综合网站 | 欧美老外a级毛片 | 黄色片在线免费播放 | 久久久涩 | 爱高潮www亚洲精品 欧美黄色一级片视频 | 欧美日韩高清在线观看 | 成人免费看视频 | 91午夜视频| 伦理三区 | 色婷婷久久久久久 | 91色综合综合热五月激情 | 精品国产91久久久久 | 欧美一级免费在线观看 | 香蕉视频1024 |