您好,登錄后才能下訂單哦!
今天小編給大家分享一下C++命名空間namespace怎么定義的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
定義命名空間,使用namespace關鍵字,后面跟命名空間的名字,然后接一對花括號{ } 即可,{ }中即為命名空間的成員。
namespace test { int a = 10; int b = 100; int ADD(int x, int y) { return x + y; } }
namespace test { int a = 10; int b = 100; int Add(int x, int y) { return x + y; } namespace test2 { int c(99); int d(9); //c++可以使用括號來進行列表初始化 int Sub(int x, int y) { return x - y; } } }
同一個工程中允許存在多個相同名稱的命名空間,編譯器最后會合成同一個命名空間中。
例如:
namespace N1 //N1是命名空間的名稱 { //用花括號{ }將命名空間的內容包起來 //命名空間的內容,即可以定義變量,也可以定義函數 int a; int Add(int x, int y) { return x + y; } } namespace N1 //再次定義命名空間 N1 { int Mul(int x, int y) { return x * y; } }
實際上等同于:
namespace N1 //N1是命名空間的名稱 { //用花括號{ }將命名空間的內容包起來 //命名空間的內容,即可以定義變量,也可以定義函數 int a; int Add(int x, int y) { return x + y; } int Mul(int x, int y) { return x * y; } }
C++為了防止命名沖突,把自己庫里面的東西都定義在一個std的命名空間中要使用標準庫里面的東西,有三種方式:
加命名空間的名稱及作用域限定符。
使用using引入命名空間的成員。
使用using namespace 命名空間名稱引入,將所有名稱全展開。
代碼如下:
namespace test { int a = 10; int b = 100; int Add(int x, int y) { return x + y; } namespace test2 { int c(99); //c++可以使用括號來進行初始化 int d(9); int Sub(int x, int y) { return x - y; } } } int main() { std::cout << test::Add(test::a, test::b) << std::endl; std::cout << test::test2::Sub(test::test2::c, test::test2::d) << std::endl; return 0; }
指定命名空間–麻煩,每個地方都要指定,但也是最規范的方式。
代碼如下:
using namespace std;
把std整個展開,相當于庫里面的東西全部到全局域里面去了,使用起來方便但是可能會有與自己命名空間定義的沖突,規范工程中不推薦這種,日常練習可以用這種。
代碼如下:
int c = 100; namespace N { int a = 10; int b = 20; int Add(int left, int right) { return left + right; } int Sub(int left, int right) { return left - right; } } using std::cout; using std::endl; int main() { printf("%d\n", N::a); printf("%d\n", N::b); printf("%d\n", N::Add(1, 2)); printf("%d\n", N::Sub(1, 2)); int c = 10; printf("%d\n", c); //局部變量優先,所以c為10 printf("%d\n", ::c); //指定訪問左邊域,空白表示全局域 }
對部分常用的庫里面的東西展開->針對1和2的折中方案,項目中也經常使用。
以上就是“C++命名空間namespace怎么定義”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。