c++命名空间---namespace
C++?命名空間
?C++ 應(yīng)用程序中。例如,您可能會寫一個名為 func() 的函數(shù),在另一個可用的庫中也存在一個相同的函數(shù) func()。這樣,編譯器就無法判斷您所使用的是哪一個 func() 函數(shù)。
因此,引入了命名空間這個概念,專門用于解決上面的問題,它可作為附加信息來區(qū)分不同庫中相同名稱的函數(shù)、類、變量等。使用了命名空間即定義了上下文。本質(zhì)上,命名空間就是定義了一個范圍。
定義命名空間
命名空間的定義使用關(guān)鍵字?namespace,后跟命名空間的名稱,如下所示:
為了調(diào)用帶有命名空間的函數(shù)或變量,需要在前面加上命名空間的名稱,如下所示:
name::code; // code 可以是變量或函數(shù),name是命名空間的名字
eg:
#define _CRT_SECURE_NO_WARNINGS#include<iostream> namespace space_test1 {typedef int T;int a = 1000;void fuc(void){std::cout << "I am space_test1 \n";} }namespace space_test2 {typedef double T;int a = 100;void fuc(void){std::cout << "I am space_test2\n";} } int main() {//通過命名空間的不同,可以使用相同的函數(shù),變量,類型space_test2::T high = 1.1;space_test1::T age = 25;space_test2::fuc();space_test1::fuc();std::cout << "high=" << high << std::endl;std::cout << "age="<< age<<std::endl;std::cout << "space_test1::a=" << space_test1::a << std::endl;std::cout << "space_test2::a=" << space_test2::a << std::endl;system("pause");return 0; }using 指令
您可以使用?using namespace?指令,這樣在使用命名空間時就可以不用在前面加上命名空間的名稱。這個指令會告訴編譯器,后續(xù)的代碼將使用指定的命名空間中的名稱。
?
為什么我們不推薦using namespace? ...的做法:
?
命名空間使用這樣直接的聲明,破壞了它想要解決的同名函數(shù),變量,類等問題,雖然在不引起二義性的情況下,我們會方便一些,因為可以少輸入幾個字符,但是,在不能保證是否有相同函數(shù),變量,類的情況下,還是使用命名空間前綴更合適。
轉(zhuǎn)載于:https://www.cnblogs.com/yangguang-it/p/9612938.html
總結(jié)
以上是生活随笔為你收集整理的c++命名空间---namespace的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Luogu P4205 [NOI2005
- 下一篇: PXE(preboot executio