Bra*_*ler 2 c++ coding-style namespaces declaration
我正在创建一个静态库,其中定义的所有内容都在一个名称空间中.但我不确定是否应该将方法定义为类,或者将它们包装在命名空间中.我问的是:
这是有效的:
MyThings.h
namespace MyThings {
void DoStuff();
void DoOtherStuff();
}
Run Code Online (Sandbox Code Playgroud)
MyThings.cpp
namespace MyThings {
void DoStuff() {
// Do this.
}
void DoOtherStuff() {
// Do that.
}
}
Run Code Online (Sandbox Code Playgroud)
或者,我应该像定义方法那样定义它吗?:
MyThings.cpp
void MyThings::DoStuff() {
// Do this.
}
void MyThings::DoOtherStuff() {
// Do that.
}
Run Code Online (Sandbox Code Playgroud)
我宁愿不使用using namespace MyThings;,我宁愿使用我的第一个例子,如果它是有效的,我觉得它使代码更易读,而不必MyThings::在每个方法标识符之前使用.
两者都有效,所以你可以根据口味挑选自己的风格.
使用以下方法定义函数有一个广告优势:
void MyThings::DoStuff() {
// Do this.
}
Run Code Online (Sandbox Code Playgroud)
这是为了做到这一点,该函数必须已经声明.因此,错误如:
void MyThings::DoStuf() {
// Do this.
}
Run Code Online (Sandbox Code Playgroud)
要么
void MyThings::DoStuff(int i) {
// Do this.
}
Run Code Online (Sandbox Code Playgroud)
在编译时被捕获MyThings.cpp.如果你定义
namespace MyThings {
void DoStuff(int i) {
// Do this.
}
}
Run Code Online (Sandbox Code Playgroud)
那么你通常不会得到错误,直到另一个源文件中的某个人试图调用该函数,并且链接器抱怨.显然,如果您的测试是非垃圾,您将以某种方式捕获错误,但更快通常会更好,您可能会从编译器中获得比链接器更好的错误消息.