記事ディレクトリ
序文
実際の開発ではプログラマが共同で開発することが多く、開発過程で複数のプログラマが同じ変数名を定義することがあり、最終的にプログラムを組み立てる際にプログラムがクラッシュするなどの惨事につながりますが、C 言語ではこのようなエラーは避けられません。 C++ キーワード名前空間の出現により、この問題は解決されました。
たとえば、次のエラーが考えられます。
#include <iostream>
#include <stdlib.h>
using namespace std;
int rand = 10;
int main()
{
cout << rand << endl;
return 0;
}
上記のコードを実行すると、コンパイラは次のエラーを報告します。rand はstdlib.h
ヘッダー ファイルに含まれる関数であることがわかっており、rand という名前の変数をグローバルに定義すると、コンパイラは再定義するように指示します。 。名前空間はこの問題を非常にうまく解決します。まず、この問題を解決するために名前空間の定義と使用法を学びましょう。
1. 名前空間の定義
名前空間の定義は、名前空間キーワードの後に独自の名前と {} のペアを追加するだけです。以下のコードでそれを示します。
namespace name//name可以随便起名,在开发中一般用项目的名字来命名
{
//在命名空间中可以定义变量/函数/结构体
int a;
int Add(int x, int y)
{
return x + y;
}
struct student
{
int age;
string name;
};
}
//此外命名空间还可以如下所示嵌套定义
namespace N1
{
int a = 0;
int b = 2;
namespace N2
{
int w = 45;
int y = 11;
}
}
初心者は、2 つの名前空間が同じ名前を持つ場合はどうなるのか、という質問をするかもしれません。
実際、2 つの名前空間が同じ名前を持つ場合、2 つの名前空間は 1 つの名前空間にマージされ、
プロジェクト ファイル内の .h および .cpp ファイルの名前空間も 1 つの名前空間にマージされます。
2. 名前空間の使用
名前空間は次の 3 つの方法で使用できますが、便宜上、最初に次の名前空間を設定します。
namespace Gao
{
int a=10;
}
次のコードで main 関数に a を直接出力する場合、コンパイラは a の場所を見つけることができないため、エラーが報告されます。以下の3つの方法でaを出力する方法を順番に紹介していきます。
int main()
{
cout<<a<<endl;
return 0;
}
1. 名前空間名とスコープ修飾子の追加
このメソッドは、変数 a が Gao 名前空間にあることをコンパイラーに伝え、コンパイラーが検索して出力できるようにします。
int main()
{
cout<<Gao::a<<endl;
return 0;
)
2. using を使用して名前空間のメンバーをインポートします
この方法は、Gao 名前空間に があることをコンパイラに事前に通知し、コンパイラがそれに直接アクセスできるようにするのと同じです。
using Gao::a;
int main()
{
cout<<a<<endl;
}
3. using namespace ネームスペースを使用して導入します
このメソッドは Gao 名前空間を直接展開し、コンパイラーが Gao 名前空間内のすべてのメンバーに自由にアクセスできるようにします。
using namespace Gao;
int main()
{
cout<<a<<endl;
return 0;
}
要約する
このブログを読んだ後、冒頭の質問は誰にとっても簡単な質問だと思います。C++ の学習の道をさらに深く掘り下げていきましょう。