在c++中更喜欢什么名称空间或静态函数



如果一个类没有状态,我们应该将其包含在命名空间中还是生成静态函数。命名空间不能有私有函数,尽管类可以。例如:

方法1:

class Algorithms
{
static double calculate_bearing();
private:
static double function_used_by_calculate_bearing_function();
};

方法2:

namespace Algorithms
{
double calculate_bearing();

namespace __Internal
{
double function_used_by_calculate_bearing_function();
}
}

两者中哪种方法更可取?

我不喜欢使用class+static来模拟namespace。这是一种针对不同语言限制的变通方法。

然而,在这种情况下,我会选择选项3,省略正向声明,并用内部链接定义它。

算法.hpp

namespace Algorithms
{
double calculate_bearing();
}

算法.pp

namespace
{
double function_used_by_calculate_bearing_function() { /* some calculation */ }
}
namespace Algorithms
{
double calculate_bearing() { /* use above function */ }
}

最新更新