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

时间:2013-01-04 00:53:30

标签: c++ class namespaces header-files

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

namespace mylib
{
    class MyClass
    {
        public:

        MyClass();
    }
}

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

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

mylib::MyClass::MyClass()
{
}

namespace mylib
{
    MyClass::MyClass()
    {
    }
}

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

2 个答案:

答案 0 :(得分:6)

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

另请注意,一旦开始使用班级中定义的自定义类型,不使用namespace可能会变得相当繁琐和令人困惑,例如用作返回或参数类型的不同本地类:

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

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

答案 1 :(得分:0)

mylib::包含7个字符

namespace mylib { }包含16个字符(不包括空格)

因此,只要您定义了3种或更多种方法,通过使用第二种形式,您将节省打字时间。