重载支架运算符 [] 获取和设置

Overload bracket operators [] to get and set

本文关键字:获取 设置 运算符 重载      更新时间:2023-10-16

我有以下类:

class risc { // singleton
    protected:
        static unsigned long registers[8];
    public:
        unsigned long operator [](int i)
        {
            return registers[i];
        }
};

如您所见,我已经实现了用于"getting"的方括号运算符。
现在我想实现它进行设置,即:risc[1] = 2 .

怎么能做到呢?

试试这个:

class risc { // singleton
protected:
    static unsigned long registers[8];
public:
    unsigned long operator [](int i) const    {return registers[i];}
    unsigned long & operator [](int i) {return registers[i];}
};

您需要从operator[]返回引用,以便类的用户使用它来设置值。所以函数签名将是unsigned long& operator [](int i) .