ホームページ > バックエンド開発 > C++ > C の非クラス型では、なぜ `const int Operator[](const int Index) const` が `int Operator[](const int Index) const` よりも優先されるのでしょうか?

C の非クラス型では、なぜ `const int Operator[](const int Index) const` が `int Operator[](const int Index) const` よりも優先されるのでしょうか?

DDD
リリース: 2024-10-30 13:26:35
オリジナル
568 人が閲覧しました

Why is `const int operator[](const int index) const` preferred over `int operator[](const int index) const` for non-class types in C  ?

非クラス型に対して 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート