C使用命名空间语句

前端之家收集整理的这篇文章主要介绍了C使用命名空间语句前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
namespace MyNamespace
{
    static void foo1()
    {

    }
}

using namespace MyNamespace;

class MyClass
{
    void foo2()
    {
        ::foo1();
    }    
};

范围解析操作::表示在全局命名空间中使用方法.在这里我们可以使用:: foo1().这意味着方法foo1()在全局命名空间中,对吗?

我的问题是,使用命名空间ANAMESPACE_NAME是否意味着我们将命名空间ANAMESPACE_NAME中的所有元素导入全局命名空间?

解决方法

C 2003标准的第3.4.3.4节有一个答案:

A name prefixed by the unary scope operator :: (5.1) is looked up in
global scope,in the translation unit where it is used. The name shall
be declared in global namespace scope or shall be a name whose
declaration is visible in global scope because of a using-directive

(3.4.3.2).

这一段在C 11 FDIS中几乎相同,因此这可能也适用于C 11.

猜你在找的C&C++相关文章