我认为它是索引运算符。我对吗?
几乎。它被称为下标运算符,它必须接受一个参数。您的运营商接受两个,这使您的代码非法。
它支持接下来的事情吗?
假设你有一个正确编写的operator []
(在不知道应用程序逻辑的一些上下文的情况下,我不知道如何编写一个),那么你提到的两个指令都应该得到支持。
但是,为了做到这一点:
a[1] = 3;
要合法(如果返回基本类型),operator []
应该返回一个左值引用 - 因此,int&
而不是int
. 当然,这意味着左值引用所绑定的对象不能是本地对象或临时对象,因为这意味着返回一个悬空引用。
int& operator [] (const int power) { // <== The function cannot be "const" if you
// ^ // are returning a non-const lvalue ref
// to a data member or element of a data
// member array
// here there is some code
}
您可能还需要一个const
版本的下标运算符:
int operator [] (const int power) const {
// No need to use a int const& ^^^^^
// here, that is basically the This member function can be const, since it is
// same as returning an int by neither modifying the object on which it is
// value invoked, nor returns any non-const lvalue ref
to a data member or an element of data member
// here there is some code
}