一、C++ 命名空間
命名空間為了大型項目開發(fā),而引入的一種避免命名沖突的一種機制。比如說,在一個大型項目中,要用到多家軟件開發(fā)商提供的類庫。在事先沒有約定的情況下,兩套類庫可能在存在同名的函數(shù)或是全局變量而產(chǎn)生沖突。項目越大,用到的類庫越多,開發(fā)人員越多,這種沖突就會越明顯。
1.默認(rèn)NameSpace(Global&Function)
Global scope 是一個程序中最大的 scope。也是引起命名沖突的根源。C 語言沒有從語言層面提供這種機制來解決。也算是 C 語言的硬傷了。Global scope 是無名的命名空間。
1
2
3
4
5
6
7
8
9
10
|
//c 語言中如何訪問被局部變量覆蓋的全局變量 int val = 200; int main() { int *p = &val; int val = 100; printf ( "func val = %d\n" ,val); printf ( "global val = %d\n" ,*p); return 0; } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <iostream> #include <string.h> using namespace std; int val = 200; void func() { return ; } int main() { int val = 100; cout<< "func val = " <<val<<endl; cout<< "global val = " <<::val<<endl; ::func(); //因為不能在函數(shù)內(nèi)定義函數(shù)。所以前而的::沒有意義。 return 0; } |
2.語法規(guī)則
NameSpace是對全局(Global scope)區(qū)域的再次劃分。
1.聲明
命令空間的聲明及namespace中可以包含的內(nèi)容
1
2
3
4
5
6
7
|
namespace NAMESPACE { 全局變量 int a; 數(shù)據(jù)類型 struct Stu{}; 函數(shù) void func(); 其它命名空間 namespace } |
2.使用方法
1.直接指定 命名空間: Space::a = 5;
2.使用 using+命名空間+空間元素:using Space::a;
3.使用 using +namespace+命名空間: using namespace Space;
3.支持嵌套
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <iostream> using namespace std; namespace MySpace { int x = 1; int y = 2; namespace Other { int m = 3; int n = 4; } } int main() { using namespace MySpace::Other; cout<<m<<n<<endl; return 0; } |
4.協(xié)作開發(fā)
同名命名空間自動合并,對于一個命名空間中的類,要包含聲明和實現(xiàn)。
a.h
1
2
3
4
5
6
7
8
9
10
11
|
#ifndef A_H #define A_H namespace XX { class A { public : A(); ~A(); }; } #endif // A_H |
a.cpp
1
2
3
4
5
6
7
8
9
10
|
#include "a.h" using namespace XXX { A::A() { } A::~A() { } } |
b.h
1
2
3
4
5
6
7
8
9
10
11
12
|
#ifndef B_H #define B_H namespace XX { class B { public : B(); ~B(); }; } #endif // B_ |
b.cpp
1
2
3
4
5
6
7
8
9
|
#include "b.h" namespace XX { B::B() { } B::~B() { } } |
main.cpp
1
2
3
4
5
6
7
8
9
10
11
|
include <iostream> #include "a.h" #include "b.h" using namespace std; using namespace XX; int main() { A a; B b; return 0; } |
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!
原文鏈接:https://blog.csdn.net/qq_43414070/article/details/121022437