1,名稱空間的定義

名稱空間可以把不同的方法分散到不同的檔案去實現,如果你會objective-C,他的作用和裡面的類目有異曲同工之妙。當然了也有很多不同的地方,首先要明白的是,名稱空間並不是一個類,你擴充套件他的方法並不是和類目一樣在擴充套件一個類的方法。

如果你學過NET開發,獲取你會對這個名稱空間有更好的理解。

2,名稱空間的寫法

namespace test
{
int value;
void printfStr();
} void test::printfStr()
{
std::cout<<"teststes";
}

我的習慣是一般會直接在名稱空間裡面定義函式或者類的成員方法,然後再名稱空間的外部去實現這些方法或者函式。這樣會使名稱空間看著更加的整潔。

namespace是定義名稱空間的關鍵字  test是名稱空間的名稱。

3,名稱空間的使用

int main(int argc, const char * argv[])
{ int value = 0;
using test::value;
}

如果名稱空間是在別的檔案中引用還需要在此檔案中匯入一句話

using namespace test;

這句話的作用,就是引用此名稱空間。

當然了,細心的哥們可能會意識到上面的這段程式碼有一些錯誤,就是

int value = 0;

using test::value;

這兩句會出現錯誤。

首先我們要明白,在名稱空間中定義的變數具有全域性性,如果你在該檔案中使用了此名稱空間,那麼此檔案中得變數名不能與此名稱空間有衝突的地方,如果兩個變數名稱相同的話會出現報錯的情況。

4,名稱空間的別名

 namespace TT = test;
TT::printfStr();

上述是為一個名稱空間取別名的方法。

5,未名稱空間

namespace
{
int value;
int value1;
}

未名稱空間有一定的侷限性,只能在本檔案中使用。

每一個檔案中只能有一個未名稱空間

說了這麼多,我感覺未名稱空間有點和static類似.