C++ 在using语句中指定类名的作用是什么?
鉴于以下情况:C++ 在using语句中指定类名的作用是什么?,c++,class,scope,using,named-scope,C++,Class,Scope,Using,Named Scope,鉴于以下情况: 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;
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; }
};
}
名称空间Foo{
分类栏{
静态常数自动私有=0;
const int private_u2;=1;
void ptivateFunc(){cout它允许您使用Bar
而不使用Foo
命名空间。它允许您使用Bar
而不使用Foo
命名空间。来自:
使用ns_name::name
;(6)
(…)
6) 使用声明:使命名空间ns\u name
中的符号name
可用于非限定查找,如同在与此使用声明出现的位置相同的类作用域、块作用域或命名空间中声明一样
使用名称空间ns_name
;(5)
5) using指令:从using指令之后任何名称的非限定名称查找的角度来看,直到它出现的范围结束,命名空间名称中的每个名称都是可见的,就像它是在最近的封闭命名空间中声明的一样,该命名空间包含using指令和命名空间名称
因此,基本上您可以在命名空间Foo
之外(但在using声明的范围内)编写Bar
而不是Foo::Bar
,而命名空间Foo
中的其他符号仍然需要全名
如果使用使用名称空间Foo
,则可以通过其本地名称访问Foo
中的所有符号,而无需显式的Foo::
来自:
使用ns_name::name
;(6)
(…)
6) 使用声明:使命名空间ns\u name
中的符号name
可用于非限定查找,如同在与此使用声明出现的位置相同的类作用域、块作用域或命名空间中声明一样
使用名称空间ns_name
;(5)
5) using指令:从using指令之后任何名称的非限定名称查找的角度来看,直到它出现的范围结束,命名空间名称中的每个名称都是可见的,就像它是在最近的封闭命名空间中声明的一样,该命名空间包含using指令和命名空间名称
因此,基本上您可以在命名空间Foo
之外(但在using声明的范围内)编写Bar
而不是Foo::Bar
,而命名空间Foo
中的其他符号仍然需要全名
如果您使用使用名称空间Foo
,您可以通过其本地名称访问Foo
中的所有符号,而无需显式的Foo::
的可能重复项,因此它与使用名称空间Foo;
完全相同,但它限制了条形图
?@JonathanMee的范围暴露,正是如此与使用命名空间Foo;
完全相同,但它将作用域公开限制为Bar
?@JonathanMee。您可能希望包括这一点,即它仅限于引入using声明的作用域。“就像在与此using声明出现的位置相同的类作用域、块作用域或命名空间中声明一样”-这是在引号中,但我也将其添加到了解释中。您可能希望包括,这仅限于引入using声明的范围。“好像在与此using声明出现的位置相同的类范围、块范围或命名空间中声明”-这是在引号中,但我也将其添加到了解释中。