C++ [] = 运算符重载,终于静心试了一下,以前都是拷贝了修改…………不知所以

之前一直困惑或者畏惧的运算符,今天算是做了一个初步的了解。

做了一个分段数组的数据类,里面包含若干段数据,但是序号不是连续的,为了方便快速使用[],查到数据值,最好的办法就是重载[]运算符。

找了些按理,都没有解释清楚,写法的具体含义。

class  Data
{
public:
    std::vector<std::vector<unsigned>> data ;
    unsigned& operator[](unsigned idx)// ()里表示[]里传递的数据类型和值idx.
    //返回类型表示原变量带着中括号时的类型
    {
        return *(GetDataPtr(idx));//表示返回的内容。如果是为了访问,建议使用引用或者指针,这样可以修改掉内部的值,否则会被丢弃。跟函数的意义一样。
    }
    unsigned operator=(unsigned data)// ()里表示等号右边的数据类型和值data.
    //返回类型unsigned,表示等号左边要接受的数据类型。
    {
        return data ;//表示等号左边获取到的数据值data.
    }
}

第一个 [] 运算符重载。

如果写成

Data x;

//初始化,增加一些数据段。每段固定100个索引,实际可能只有小于100的数。为了省空间。

x[0]=23; 此时就用到了重载运算符[]和=; 表示x[0]被赋值为23;

重载之前,x[0]是不允许的。

被23赋值也是不允许的。默认只能相同类型的赋值。

这样一来,就可以当做普通数组看待了,只是内部把一些用不到的空间省掉了。

对外不可见。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值