欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-23 09:26:42
...

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

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

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

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赋值也是不允许的。默认只能相同类型的赋值。

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

对外不可见。

相关标签: 备忘录 c++