ホームページ > バックエンド開発 > C++ > ## C クラスで変数のシャドーイングを回避するにはどうすればよいですか?

## C クラスで変数のシャドーイングを回避するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-25 01:41:30
オリジナル
834 人が閲覧しました

## How Can I Avoid Shadowing Variables in C   Classes?

C の変数のシャドウイング

変数のシャドウイング、つまり、同じ名前の変数がプログラム内の異なるスコープで宣言される現象により、次のような問題が発生する可能性があります。

提供されたコード スニペットに示されているように、C クラスのコンテキストでは、メンバー変数と同じ名前を共有するメンバー関数内でローカル変数が宣言されている場合に、この問題が発生する可能性があります。 .

シャドウイングについて

この例では、メンバー変数 T とMeasure_set が Measure クラス内で定義され、ローカル変数 T が get メソッド内で宣言されています。このローカル変数に値が割り当てられると、同じ名前のメンバー変数がシャドウされます。

これは、コンパイラが最初に現在のスコープで変数定義を検索するために発生します。ローカル変数は get メソッドに存在するため、メンバー変数よりも優先されます。

シャドウイングを回避する方法

変数のシャドウイングを回避する 1 つの方法は、プレフィックスを使用することです。またはメンバー変数の接尾辞。たとえば、メンバー変数を示すために「m_」接頭辞を追加するのが一般的です。これは、ローカル変数と区別するのに役立ちます。

サンプル コード

これは、シャドウイングを回避するためにプレフィックスを使用する Measure クラスの修正バージョンです。

<code class="cpp">class Measure {
    int         m_N;
    double      m_measure_set[MEASURE_SET_SIZE];
    std::string m_nomefile;
    double      m_T;

public:
    const std::string&amp; nomefile() const { return m_nomefile; }
    ...
};</code>
ログイン後にコピー

この例では、シャドウイングを避けるためにメンバー変数に「m_」という接頭辞が付けられています。 get メソッドは、名前の競合なしでメンバー変数を直接使用するようになりました。

結論

明確で正しい C コードを作成するには、変数のシャドウイングを理解することが重要です。メンバー変数に接頭辞または接尾辞を使用すると、混乱を回避し、異なるスコープ内で正しい変数が確実にアクセスされるようにすることができます。

以上が## C クラスで変数のシャドーイングを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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