在编译单元或命名空间的成员声明中命名空间中,包含的类型可以被成员直接使用。例如:
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 是错误的。
和别名使用指示符不同,命名空间使用指示符可以导入在编译单元或命名空间主体中预定义的类型。
在使用命名空间的时候,如果在编译单元或命名空间主体中定义的成员与命名空间使用指示符导入的成员名字相同,编译器将认作是前者。也就是说,编译单元或命名空间主体中定义的成员覆盖了命名空间使用指示符导入的同名成员。
新闻热点
疑难解答