前書き: C++、cplusplus は、その名前が示すように、C 言語の promax バージョンであり、C++ は C 言語と互換性があります。
C++ が誕生したのは、ベル研究所の Benjani ら偉人たちが、C 言語には文法上の穴が多すぎて、多くの欠点 (名前の衝突など) があり、長期間使用すると不便に感じるため、発明されたためです。構文の穴。
名前空間
名前空間を理解する前に、ブロガーは最初に小さな質問をします。「C++ ファイルの先頭でパッケージ化することが多いのですがusing namespace std;
、この文が何をしているか知っていますか?」(下の背景が黄色のクリップ)
C 言語には名前の競合の問題があります。将来、あなたと同僚がプロジェクトを担当することになった場合、担当するライブラリが相互にリンクされると、名前の競合が発生する可能性があります。たとえば、次のように宣言した場合、 C 言語で同じ名前の変数を定義する場合、現時点ではどちらか 1 人だけが譲歩して、すべての変数をエイリアスに変更できます。C++ 名前空間は、この状況を解決するために生まれました。
1. 名前空間とスコープ修飾子::
namespace example
{
//命名空间中可以定义变量/函数/类。
int a = 0;
int Add(int x,int y){
return x+y;
}
}
int main()
{
//可以将命名空间想象成一个围墙,围墙里面的东西必须要有权限才能访问。
//cout << a << endl; 实操后发现并不能打印出a的值
cout << example::a << endl; //域作用限定符:: 借助该符号可以访问命名空间里的数据。
return 0;
}
2. 名前空間を展開します
1. 一部拡大(認可)
上記で作成した名前空間で Add 関数を頻繁に使用する必要があるとします。ただし、ドメイン スコープ修飾子を毎回使用するのは特に面倒です。ここで名前空間の一部を拡張できます。
形式は次のとおりです。 using example::Add;
namespace example
{
int a = 0;
int Add(int x,int y){
return x+y;
}
}
using example::Add; //展开部分命名空间
int main()
{
cout << Add(1,2) << endl; //这里并没有运用与操作限定符,却也可以使用命名空间里的Add函数。
return 0;
}
2. すべて展開
形式:using namespace example;
std は C++ 標準ライブラリの名前空間です。名前空間 std を使用します。C++ 標準ライブラリを展開します。std が展開されていない場合、cout、cin およびその他の構文は使用できません。
namespace example
{
int a = 0;
int Add(int x, int y) {
return x + y;
}
}
using namespace example; //全部展开命名空间
int main()
{
//不用域作用限定符也可访问example里的变量,函数
cout << a << endl;
cout << Add(1, 2) << endl;
return 0;
}
3. マトリョーシカ人形
名前空間は名前空間内に入れ子にすることができますが、通常はこのようには使用されません。ただし、誤って表示しても驚かないでください。
namespace example
{
int a = 0;
namespace instance
{
int a = 1;
}
int main()
{
cout << example::a << endl; // 0
cout << example::instance::a << endl; // 1
return 0;
}
要約: 要約すると、名前空間を使用するには 3 つの方法があります。
将来、同じ名前を持つ 2 つ以上の変数を定義する場合は、それらを異なる名前空間に配置できます。
名前空間をうまく使用すると、今後の演習や作業で不必要なトラブルを大幅に回避できます。
記事末尾BB: ご不明な点がございましたら、お気軽にコメント欄にメッセージを残してください。記載内容に誤りがある場合は、コメント欄でご指摘ください。ブロガーが作成します。見たらすぐに修正。最後に、これを作るのは簡単ではありませんが、友達に役立つのであれば、あなたがお金持ちになって、私に「いいね!」や注目を集めてくれることを願っています。