未命名的命名空间如何优于static关键字?
每当我有一些朝向"效用"方向的功能时,我最终想知道哪个选项是最好的.例如,在我工作的上下文中打印消息结构(自己的或外部的),一些编码/解码代码或简单的一些有用的转换函数.
我想到的选项是:
1)helper类/ struct中的静态函数.
struct helper
{
static bool doSomething(...);
};
Run Code Online (Sandbox Code Playgroud)
2)非成员函数.
namespace helper
{
bool doSomething(...);
}
Run Code Online (Sandbox Code Playgroud)
3)静态非成员函数.
namespace helper
{
static bool doSomething(...);
}
Run Code Online (Sandbox Code Playgroud)
在某些情况下,可能需要在"实用程序"中初始化或保持状态,因此我选择选项1以避免"全局"状态.但是,如果没有需要保留的状态,我应该选择2还是3?选项2和3之间的实际区别是什么?
重要的是要考虑什么,是否有一种首选的方法来解决这个问题?谢谢!
直到现在我才真正尝试过.是否可以在没有类的情况下在命名空间范围内使用静态?为什么不?
namespace MyNamespace
{
static int a;
}
assign something, somewhere else....
Run Code Online (Sandbox Code Playgroud)