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

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


同じクラスに同じ名前の2人のPiyushがいる場合を考えてみましょう。それらを明確に区別する必要があるときはいつでも、名前とともにいくつかの追加情報を使用する必要があります。たとえば、地域、別の地域に住んでいる場合、母親や父親の名前などです。

同じ状況がC++アプリケーションでも発生する可能性があります。たとえば、xyz()という関数を持つコードを記述していて、同じ関数xyz()を持つ別のライブラリが利用可能であるとします。これで、コンパイラーは、コード内で参照しているxyz()関数のバージョンを知る方法がありません。

名前空間は、この問題を克服するように設計されており、異なるライブラリで使用可能な同じ名前の類似した関数、クラス、変数などを区別するための追加情報として使用されます。名前空間を使用して、名前が定義されているコンテキストを定義できます。本質的に、名前空間はスコープを定義します。

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

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

この方法は、短いサンプルコードや簡単なプログラムでは問題ありませんが、std名前空間全体をグローバル名前空間に取り込むことは、名前空間の目的を損ない、名前の衝突につながる可能性があるため、良い習慣ではありません。 (最初は名前の衝突がなかったとしても、プロジェクトにコードやライブラリなどが追加されると、メンテナンス中に名前の衝突が発生する可能性があります。)この状況は一般に名前空間の汚染と呼ばれます。


  1. LTEとはどういう意味ですか?

    ロングタームエボリューション(LTE)は、WiMaxや3Gなどの以前のテクノロジーに代わる4Gワイヤレスブロードバンド規格です。 3Gよりは高速ですが、現在のワイヤレス標準である真の4Gと5Gの両方よりも低速です。 LTEは、ワイヤレス(Wi-Fi)接続の代わりに、スマートフォンやタブレットなどのモバイルデバイスで使用されます。 3Gまたは4Gと同様に、LTEは、モバイルデバイスがセルラータワーからインターネットに接続する方法を決定する技術標準です。 LTEは主に、4Gに向けた進歩を意味するマーケティング用語です。 LTEまたは4Gとは何かを決定する国際的な規制機関はありません。したがって

  2. SNMPはどういう意味ですか?

    SNMPは、簡易ネットワーク管理プロトコルを意味します。これは、ネットワーク管理者がネットワークスイッチ、プリンター、電話、およびネットワークに接続されているその他のデバイス(SNMPエージェントとも呼ばれます)に関する情報を収集するために使用するクライアントサーバープロトコルです。 Windows 10では、SNMPはデフォルトで有効になっていません。Microsoftでは、代わりにCommon Information Model(CIM)を使用することをお勧めします。 ネットワークにおけるSNMPの意味は何ですか? SNMPはクライアントサーバープロトコルです。つまり、ネットワーク管