什麼是名稱空間

C++名稱空間是 C++實體(函式,類,變數)的集合,其名稱以名稱空間的名稱為字首。在名稱空間中編寫程式碼時,屬於該名稱空間的命名實體不需要以名稱空間名稱為字首,但是在其外部的實體必須使用完全限定名稱。完全限定名稱的格式為 <namespace>::<entity>。例:

namespace Example
{
  const int test = 5;

  const int test2 = test + 12; //Works within `Example` namespace
}

const int test3 = test + 3; //Fails; `test` not found outside of namespace.

const int test3 = Example::test + 3; //Works; fully qualified name used.

名稱空間對於將相關定義分組在一起非常有用。以購物中心為例。通常,購物中心被分成幾個商店,每個商店銷售來自特定類別的商品。一家商店可能會銷售電子產品,另一家商店可能會銷售鞋子商店型別中的這些邏輯分隔有助於購物者找到他們正在尋找的商品。名稱空間幫助 c ++程式設計師(如購物者)通過以邏輯方式組織它們來查詢他們正在尋找的函式,類和變數。例:

namespace Electronics
{
    int TotalStock;
    class Headphones
    {
        // Description of a Headphone (color, brand, model number, etc.)
    };
    class Television
    {
        // Description of a Television (color, brand, model number, etc.)
    };
}

namespace Shoes
{
    int TotalStock;
    class Sandal
    {
        // Description of a Sandal (color, brand, model number, etc.)
    };
    class Slipper
    {
        // Description of a Slipper (color, brand, model number, etc.)
    };
}

預定義了一個名稱空間,它是沒有名稱的全域性名稱空間,但可以用::表示。例:

void bar() {
    // defined in global namespace
}
namespace foo {
    void bar() {
        // defined in namespace foo
    }
    void barbar() {
        bar();   // calls foo::bar()
        ::bar(); // calls bar() defined in global namespace
    }
}