鉴于以下内容:
xmlns:android="http://schemas.android.com/apk/res/android"/>
声明namespace Foo{
class Bar{
static const auto PRIVATE = 0;
const int private_ = 1;
void ptivateFunc() { cout << 2; }
public:
static const auto PUBLIC = 3;
const int public_ = 4;
void publicFunc() { cout << 5; }
};
}
编译......但我不确定它为我提供了什么。任何人都可以解释一下该陈述的重点是什么以及它可以让我访问using Foo::Bar;
而不仅仅是Bar
?
答案 0 :(得分:5)
来自cppreference:
使用
public Automobile(Brand brand,ModelAudi modelAudi) { this.Brand = brand; this.ModelAudi = modelAudi; } public Automobile(Brand brand,ModelBmw modelBmw) { this.Brand = brand; this.ModelBmw = modelBmw; } public Automobile(Brand brand,ModelAudi modelAudi,ModelBmw modelBmw) { this.Brand = brand; this.ModelBmw = modelBmw; this.ModelAudi = modelAudi; }
; (6)
(...)
6)using-declaration:使命名空间ns_name::name
中的符号name
可以进行非限定查找,就好像在相同的类范围,块范围或命名空间中声明这个using-declaration出现一样。使用名称空间
ns_name
; (5)
5)using-directive:从使用指令之后的任何名称的非限定名称查找的角度来看,直到它出现的作用域的结尾,来自namespace-name 的每个名称都是可见的好像它是在最近的封闭命名空间中声明的,它包含using-directive和namespace-name。
所以基本上你可以在命名空间ns_name
之外写Bar
而不是Foo::Bar
(但在using声明的范围内),而命名空间{{1}中的其他符号仍然需要全名。
如果您使用Foo
,则可以使用其本地名称访问Foo
中的所有符号,而不使用明确的using namespace Foo
。
答案 1 :(得分:1)
它允许您使用Bar
而不使用Foo
命名空间。