使用して名前空間++ Cの使用詳細と名前空間STD

出典ます。https://blog.csdn.net/Bruce_0712/article/details/72824668

いわゆる名前空間は、種々の可視範囲の識別子を指します。C ++標準ライブラリの名前空間で定義されているすべての識別子がで呼び出さSTD。
A:
<iostreamの>と<でiostream.h>同じではありませんが、前者はあなたのコンパイラで、実際には、接尾辞を持っていないあなたが見ることができる内部のフォルダが含まれ、二人は二つのファイル、あなたはわかりますファイルを開く、内部にありますコードは同じではありません。

標準が明確にサポートしていませんでして、グローバル空間で定義された標準ライブラリ関数の以前の実装しているC ++サフィックスの.hヘッダファイルには、また、区別するために.hの接尾辞、標準C ++とCとのヘッダファイルで宣言されました適切に名前空間を使用するためには、ヘッダファイルのサフィックス.Hの規定を使用しないでください。

このように、グローバルネームスペース、即ち初期のC ++インプリメンテーションを使用して、ライブラリ関数(c)を呼び出すのと同じ、<でiostream.h>使用する場合、場合<入出力ストリーム>ヘッダ・ファイルは、グローバルネームスペースを定義していない場合適切coutを使用するためには、あなたが名前空間stdを使用する必要があります。

II:
いわゆる名前空間は、種々の可視範囲の識別子を指します。
C ++標準ライブラリの名前空間で定義されているすべての識別子がで呼び出さSTD。
:任意の識別子のC ++標準ライブラリを使用するときに、名前空間の概念ので、あなたは3つの選択肢持つことができます

1、直接指定された識別子を。例えば、かなりのstd :: ostreamにはostreamにより。次のように完全な文は次のとおりです。

のstd :: coutの<<はstd ::進<<はstd :: ENDL << 3.4;

2、キーワードを使用して。

std ::使用COUT、
使用のstd :: ENDLは、

手順、上記のように書くことができます。

<< <<はstd ::進COUT 3.4 <<てendl;

。3、名前空間stdを使用して使用することが最も便利である。
例:
書式#include <iostreamの>
の#include <sstream提供>
する#include <文字列>
std名前空間を使用して、
この名前空間stdすべての識別子の定義内(露出)有効です。彼らはグローバル変数として宣言されている場合。そして、上記の文は次のように書くことができます:

coutの<<進<< 3.4 <<てendl;
標準ライブラリが非常に大きいので、クラス、または関数名の名前でプログラマは、それは非常に可能性の高い名前と標準ライブラリ選択されました同じ。したがって、このような状況によって引き起こさ回避名が競合するためには、標準ライブラリ内に置くすべてのものは、名前空間stdに配置されています。しかし、それは新たな問題をもたらすでしょう。数多くのオリジナルのC ++コードの擬似標準ライブラリの長年の機能の使用に依存し、彼らがグローバル空間です。  

         だから<でiostream.h>および<iostreamの>ヘッダーファイル、およびこの1つは、以前のC ++の新しい標準をサポートするためのコードとの互換性のためですので。
名前空間は、パッケージには、標準ライブラリの名前であるために、標準ライブラリと通常「.H」なしで、前にヘッダが違いをファイルはstd

              使用するC ++の名前空間

グローバル原因となる、C ++言語は、グローバル名前空間の名前空間を提供して回避の状況競合を命名。:例として、以下の2つのヘッダを検討
//ワン。
時間チャーFUNC(CHAR)。
クラス文字列{...}。
Somelib.h //
クラス文字列{...};
上記のように定義されている場合、ファイルは、Stringクラスの競合と同じプログラムに二つのヘッドを含むことができません。
いわゆる名前空間には、ライブラリ名は、各図書館で建てられた道路のフェンスのようなものだ、パッケージ化する方法です。例えば:

名前空間myown1 {

文字列USER_NAME = "myown1"。 

名前空間myown2 {

文字列USER_NAME = "myown2"。 
}

メインint型() 

COUT << "/ N-" << "こんにちは、"名前空間を持つ<< myown1 // :: USER_NAME USER_NAME変数修飾子myown1アクセス 
<< "...そしてさようなら/ N !";

裁判所未満<< "/ N" < < "こんにちは、" << myown2 :: user_nameの// 名前空間でUSER_NAME変数修飾子myown2アクセス 
<< "...そしてさようなら/ N !";

0を返します。 
}

 

名前、名前空間

、標準C ++導入の名前空間は、回避の競合に名前のメンバーに加えて、あなたはまた、これにより、コードが不正に使用されていない保護、ローカルにあなたのコードを維持することができます。同じ名前の名前を心配していない後者のあなたの主な目的ならば、とも良いがかかる代替名前空間として機能し、意味のある、などの名前空間で、その後、標準C ++はまた、あなたは無名の名前空間を定義することができます。あなたは、それが目に見える(外無名の名前空間)、直流電流のコンパイル単位で無名の名前空間のメンバー名を使用することが、現在のコンパイル単位の外ではありませんすることができます。

未知のネームスペース定義されたフォーマット:

名前空間{

ステートメントあるいはシーケンス

}

実際には、上で定義されたとおり、同等の命令の暗黙の使用がある):( C ++標準で

名前空間$$$ {

ステートメント配列随意

}

使用して名前空間$ $$;

例:

名前空間{

INT I、

ボイドF(){/ * ... * /}

}

int型のmain(){

I 0 =; //直接名前名前空間部材Iに使用することができる

F(); // (Fの直接名前名前空間のメンバーを使用することができます)


1 ::文字列()とSomelib ::文字列():今、同じプログラムでStringクラスが競合しない、彼らはになっただろうので、場合でも、
これは、異なるクラスを区別するために宣言することによって、名前空間にことができますまたは関数待ち。

 

:容器は、ベクター、以下の例を含む、請求STD:C ++標準ライブラリの名前空間定義など
の#include "STDAFX.H"
の#include <ベクトル>
の#include <iostreamの>
する#include <アルゴリズム>
;使用名前空間STD
int型のmain(int型ARGCを、CHAR * ARGV [])
{
CONST INT = ARRAYSIZE 7;
INT IA [ARRAYSIZE] = {0,1,2,3,4,5};
ファイル://カスタムコンテナベクトル
ベクトル<整数> IVECT(IA、IA ARRAYSIZE +);
ベクトル<整数> ::検索するIterator IT1 =(ivect.begin()、ivect.end(),. 4);
IF(IT1 ivect.end ==())
  COUT << < "が見つかりません4。" <ENDL;

  COUT << "見出さ4" << ENDL << * IT1;
戻り0;
}
出力:4 4見つかりました。

发布了7 篇原创文章 · 获赞 13 · 访问量 2万+

おすすめ

転載: blog.csdn.net/xingsongyu/article/details/103629747
おすすめ