使用"使用命名空间"在声明该命名空间时

时间:2014-11-12 05:11:15

标签: c++ namespaces coding-style

假设我有以下文件:

// SomeClass.h
namespace Example
{
    class SomeClass
    {
        ...
        SomeClass someFunction();
        ...
    };

}

// SomeClass.cpp
Example::SomeClass Example::SomeClass::SomeFunction()
{
    ...
}

使用命名空间示例添加"会不会有任何后果;"在SomeClass.h中的命名空间之前,无需添加"示例::"范围运算符到Someclass.cpp文件中的东西?即使没有连续性,这会被认为是不良的编码实践吗?

改变如下:

// SomeClass.h
using namespace Example;

namespace Example
{
    class SomeClass
    {
        ...
        SomeClass someFunction();
        ...
    };

}

// SomeClass.cpp
SomeClass SomeClass::SomeFunction()
{
    ...
}

1 个答案:

答案 0 :(得分:1)

不,请不要将using namespace ...;放在全球范围内。你可以这样做:

<强> SomeClass.h

// using namespace Example; // never here please

namespace Example
{
    using namespace OtherExample; // this is okay (not global)

    class SomeClass
    {
        ...
        SomeClass someFunction();
        ...
    };

}

<强> SomeClass.cpp

namespace Example // same as in .h
{
    using namespace OtherExample; // this is okay (not global)

    SomeClass SomeClass::SomeFunction()
    {
        ...
    }
}

我还建议使用std::永远不会使用using namespace std;等潜在的巨大命名空间,即使在你自己的命名空间内也是如此,因为它们只是拖入太多常见的符号名称。 / p>