ホームページ  >  記事  >  バックエンド開発  >  コンストラクターの引数とメンバー変数に同じ名前を付けることはできますか?

コンストラクターの引数とメンバー変数に同じ名前を付けることはできますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-23 07:00:28341ブラウズ

Can Constructor Arguments and Member Variables Have Identical Names?

同一のコンストラクター引数とメンバー変数名の使用

質問:

は許容されますか?に示すように、コンストラクター引数と同じ名前を使用してメンバー変数を初期化します。次のコードですか?

class Blah {
    std::vector<int> vec;

public:
    Blah(std::vector<int> vec): vec(vec)
    {}
};

答え:

はい、この実践は C 標準に完全に準拠しています。標準のセクション 12.6.2/7 によれば、

Names in the expression-list of a mem-initializer are evaluated in the scope of the constructor for which the mem-initializer is specified.

これは、コンストラクターの初期化リスト内で、コンストラクターの引数と同じ名前を使用してメンバー変数を参照できることを意味します。したがって、指定したコードは合法であり、正しく動作することが保証されています。

追加情報:

  • コンストラクター内で、 this ポインターを使用して次の操作を行うことができます。初期化されるオブジェクトを参照します。
  • 不要な引数を避けるために、コンストラクター引数には const 参照を使用することをお勧めします。コピーします。

以上がコンストラクターの引数とメンバー変数に同じ名前を付けることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。