非クラス型に対して Const を返すことの重要性
質問:
C の場合、なぜ int 演算子[](const int Index) const の代わりに const int 演算子[](const int Index) const を使用する必要があるのですか?
答え:
非クラス型の場合、戻り値の型の最上位の const 修飾子は無視されます。これは、
int foo() {}
と
const int foo() {}
の両方の戻り値の型が int として解釈されることを意味します。ただし、参照を返す場合、const はトップレベルではなくなり、大きな違いが生じます。
int& operator[](int index);
と
int const& operator[](int index) const;
は別個です。
同様に、クラス型の戻り値の場合、T const を返すと、呼び出し元が戻り値に対して非 const 関数を呼び出すことができなくなります:
class Test { public: void f(); void g() const; }; Test ff(); Test const gg(); ff().f(); // legal ff().g(); // legal gg().f(); // illegal gg().g(); // legal
以上がC の非クラス型では、なぜ `const int Operator[](const int Index) const` が `int Operator[](const int Index) const` よりも優先されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。