インデックス演算子だと思います。私は正しいですか?
ほとんど。これは添字演算子と呼ばれ、 1つの引数を受け入れる必要があります。オペレーターは 2 つを受け入れるため、コードは違法になります。
次のことをサポートしていますか?
適切に記述されていると仮定すると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
}