命名空間的定義:
namespace cplusplus_primer
{
class Sales_item { /* ... */};
Sales_item operator+(const Sales_item&, const Sales_item&);
class Query { /* ... */};
class Query_base { /* ... */};
}
命名空間的名字在定義該命名空間的做用域中必須是惟一的。
命名空間能夠在全局做用域或其餘做用域內部定義,但不能在函數或類內部定義。
命名空間名字後面接着由花括號括住的一塊聲明和定義,能夠在命名空間中放入能夠出如今全局做用域的任意聲明:類、變量(以及它們的初始化)、函數(以及它們的定義)、模板以及其餘命名空間。
命名空間做用域不能以分號結束。
由於不一樣命名空間引入不一樣做用域,因此不一樣命名空間能夠具備同名成員。
在命名空間中定義的名字能夠被命名空間中的其餘成員直接使用,命名空間外部的代碼必須指出名字定義在哪一個命名空間中。