C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

「名前空間stdの使用」がC++で悪い習慣と見なされる理由


C ++には、コンテナやアルゴリズムなど、アプリケーションの構築に使用する一般的な機能を含む標準ライブラリがあります。たとえば、キュ​​ークラスをグローバルに定義した場合など、これらで使用される名前が公開されていない場合は、競合することなく同じ名前を再度使用します。そこで、この変更を含めるために名前空間stdを作成しました。

using namespaceステートメントは、それが存在するスコープ内で、std::の前に接頭辞を付けることなくstd名前空間の下にあるすべてのものを使用可能にすることを意味します。

この方法は、たとえばコードでは問題ありませんが、std名前空間全体をグローバル名前空間に取り込むことは、名前空間の目的を損ない、名前の衝突につながる可能性があるため、適切ではありません。この状況は名前空間汚染と呼ばれます。


  1. 名前空間std'の使用が悪い習慣と見なされたのはなぜですか?

    C ++には、コンテナやアルゴリズムなど、アプリケーションの構築に使用する一般的な機能を含む標準ライブラリがあります。たとえば、キュ​​ークラスをグローバルに定義した場合など、これらで使用される名前が公開されていない場合は、競合することなく同じ名前を再度使用します。そこで、この変更を含めるために名前空間stdを作成しました。 using namespaceステートメントは、それが存在するスコープ内で、std::の前に接頭辞を付けることなくstd名前空間の下にあるすべてのものを使用可能にすることを意味します。 この方法は、たとえばコードでは問題ありませんが、std名前空間全体をグローバル名前

  2. C ++で「名前空間stdを使用する」とはどういう意味ですか?

    同じクラスに同じ名前の2人のPiyushがいる場合を考えてみましょう。それらを明確に区別する必要があるときはいつでも、名前とともにいくつかの追加情報を使用する必要があります。たとえば、地域、別の地域に住んでいる場合、母親や父親の名前などです。 同じ状況がC++アプリケーションでも発生する可能性があります。たとえば、xyz()という関数を持つコードを記述していて、同じ関数xyz()を持つ別のライブラリが利用可能であるとします。これで、コンパイラーは、コード内で参照しているxyz()関数のバージョンを知る方法がありません。 名前空間は、この問題を克服するように設計されており、異なるライブラリで