C++使用命名空间语句
namespace MyNamespace
{
static void foo1()
{
}
}
using namespace MyNamespace;
class MyClass
{
void foo2()
{
::foo1();
}
};
作用域解析操作::
表示使用全局命名空间中的方法。这里我们可以使用::foo1()
。这意味着方法 foo1() 位于全局命名空间中,对吗?
我的问题是,使用命名空间 ANAMESPACE_NAME
是否意味着我们将命名空间 ANAMESPACE_NAME
中的所有元素导入到全局命名空间中?
namespace MyNamespace
{
static void foo1()
{
}
}
using namespace MyNamespace;
class MyClass
{
void foo2()
{
::foo1();
}
};
The scope resolution operation ::
means using method in the global namespace. Here we can use ::foo1()
. This means method foo1()
is in the global namespace, am I right?
My question is, does using namespace ANAMESPACE_NAME
mean we import all elements form the namespace ANAMESPACE_NAME
into the global namespace?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不。“使用命名空间 ANAMESPACE_NAME”意味着我们将所有元素导入到当前范围中。
你可以这样写:
No. "using namespace ANAMESPACE_NAME" mean we import all elements into current scope.
You can write something like this:
C++2003标准的3.4.3.4节有答案:
此段落在 C++11 FDIS 中几乎相同,因此这可能也适用于 C++11。
Section 3.4.3.4 of the C++2003 standard has an answer:
This paragraph is almost identical in the C++11 FDIS, so this probably also holds in C++11.
是的,没错。这意味着调用全局命名空间中定义的名为
foo1()
的方法。这称为限定命名空间查找。
是的,它将所有元素从
ANAMESPACE_NAME
命名空间导入到当前命名空间。它被称为using 指令。
如果您只想导入当前类型中的特定元素,请使用使用声明。
格式为:
Yes thats correct. It means call the method named
foo1()
defined in global namespace.This is called as Qualified Namespace Lookup.
Yes, it imports all elements from the
ANAMESPACE_NAME
namespace in to current namespace.It is called as an using directive.
If you want to import just specific element in current type use, using declaration.
format is:
是的 -
http://www.cplusplus.com/doc/tutorial/namespaces/
YEs -
http://www.cplusplus.com/doc/tutorial/namespaces/