博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重载 "operator[][]"
阅读量:6045 次
发布时间:2019-06-20

本文共 2166 字,大约阅读时间需要 7 分钟。

hot3.png

namespace dlove{    template
    class ForNextOperator{          //为了实现operator[][]的重载        friend Object;        Object *object;        Int32 receive1;         //第一次接受的operator[]的参数    private:                //全部设为 private 是为了防止..        ForNextOperator(Object *_base,Int32 _rece1):            object(_base),receive1(_rece1){            ;        }       public:        ForNextOperator(const ForNextOperator &fno):            object(fno.object),receive1(fno.receive1){            ;        }       public:        typename Object::value_type& operator[](Int32 _column){            return *(object->base+(object->column*receive1+_column));       //需要重载operator[][]的类需要有表示基址的base,二维数组列数的column        }    };}

以二维数组演示:

namespace dlove{    template
    class Array2D{        friend ForNextOperator
;    public:        enum Arribute{ROW,COLUMN};    public:     //类型定义,由于 Array2D 不准备与 STL 兼容;所以只定义一些会使用的        typedef ElemType value_type;    private:        ElemType *base;        Int32 row;      //行        Int32 column;   //列       public:        Array2D(Int32 _row,Int32 _column):            row(_row),column(_column){            base=new ElemType[row*column]();                //分布空间并默认初始化;        }           Int32 get(Arribute arrib){            switch(arrib){            case ROW:return row;            case COLUMN:return column;            }            return 0;        }           ForNextOperator
 operator[](int _row){            return ForNextOperator
(this,_row);        }               };}

测试:

#include
#include
#include
  using namespace std;using namespace dlove;  #define OUTPUTCONTAINER(container) copy(container.begin(),container.end(),ostream_iterator
(cout,"\t"));cout<
::ROW);++ci){\        for(Int32 cj(0);cj
::COLUMN);++cj){\            cout<
<<"\t";\        }\        cout<
 arr2d(3,4);    OUTPUT_ARRAY2D;    for(Int32 ci(0);ci
::ROW);++ci){        for(Int32 cj(0);cj
::COLUMN);++cj){            arr2d[ci][cj]=randab;        }    }    OUTPUT_ARRAY2D;    return EXIT_SUCCESS;}

 

转载于:https://my.oschina.net/u/1383479/blog/171078

你可能感兴趣的文章
品尝阿里云容器服务:5个2核4G节点使用情况记载
查看>>
一种基于共现的推荐算法
查看>>
Ios导航栏返回到指定的页面
查看>>
bytes,packet区别 字节数据包
查看>>
Android 中间人攻击
查看>>
HTTP服务端JSON服务端
查看>>
PhpSpreadsheet生成Excel时实现单元格自动换行
查看>>
前端编程tips
查看>>
SOLARIS 11G 安装 ORACLE 11G
查看>>
model ,orm,dao,service,持久层 ,mvc 这些名词在java中的概念?
查看>>
Python类和实例方法和属性的动态绑定
查看>>
双网卡配置
查看>>
CF 316div2 E.Pig and Palindromes
查看>>
Spring Remoting: Hessian
查看>>
RabbitMq 之简单队列
查看>>
英伟达硬件加速解码器在 FFMPEG 中的使用
查看>>
李洪强和你一起学习前端之(10)滑动门案例讲解,新闻列表
查看>>
操作系统开发之——一个简单的Bootsect
查看>>
UIKit class hierarchy
查看>>
html的文字样式、下行线、删除线、上标、下标等实现方式
查看>>