在編譯單元或命名空間的成員聲明中命名空間中,包含的類型可以被成員直接使用。例如:
namespace N1.N2
{
class A {}
}
namespace N3
{
using N1.N2;
class B: A {}
}
一個命名空間使用指示符導入了在給出的命名空間中包含的類型,但沒有引入嵌套的命名空間。見下例:
namespace N1.N2
{
class A {}
}
namespace N3
{
using N1;
class B: N2.A {} // 錯誤, N2 未知
}
這里命名空間使用指示符導入了N1 中包含的類型,但沒有導入N1 中的嵌套,所以在類B 的聲明中引用N2.A 是錯誤的。
和別名使用指示符不同,命名空間使用指示符可以導入在編譯單元或命名空間主體中預定義的類型。
在使用命名空間的時候,如果在編譯單元或命名空間主體中定義的成員與命名空間使用指示符導入的成員名字相同,編譯器將認作是前者。也就是說,編譯單元或命名空間主體中定義的成員覆蓋了命名空間使用指示符導入的同名成員。
新聞熱點
疑難解答