如何在实现方法时使用命名空间?

cor*_*zza 2 c++ namespaces class header-files

.hpp在一个命名空间中包含的行中有一个类声明:

namespace mylib
{
    class MyClass
    {
        public:

        MyClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

我计划在.cpp文件中实现类的功能.

但是,这两种方法似乎都有效:

mylib::MyClass::MyClass()
{
}
Run Code Online (Sandbox Code Playgroud)

namespace mylib
{
    MyClass::MyClass()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我想知道这些方法之间有什么区别,我是否应该优先选择其中一种方法.

Mar*_*rio 6

这是个人喜好.但是,您可以使用namespace带括号的关键字来保存代码.这些也可能更容易阅读(知道一切都在同一个命名空间中).

还要记住,namespace一旦开始使用类中定义的自定义类型,不使用可能会变得相当繁琐和混乱,例如,用作返回或参数类型的不同本地类:

myNamespace::myClass::myType &myNamespace::myClass::doSomething(const myNamespace::myOtherClass &theOther) {
    // ...
}

namespace myNamespace {
    myClass::myType &myClass::doSomethingDifferent(const myOtherClass &theOther) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)