C++ 选择创建公共函数或类私有成员函数

C++ 选择创建公共函数或类私有成员函数,c++,function,C++,Function,假设我有一个名为foo()的函数和一个类a。对于类a,它将出于某种目的使用foo(),但foo()不会使用类a的任何属性 在这种情况下,是将foo()作为类外的公共函数,还是将其作为类a的私有函数 你有一些选择它的推理规则吗?取决于foo方法的用途?。如果任何其他类正在使用该方法,请在诸如utils或类似的通用类中创建它。如果foo()仅用于类A,则将其设置为类A中的私有对象。无需将其设置为类成员。只需将其定义为类定义中的函数即可 这是一个很好的解释,说明了非成员函数实际上是件好事,可以使代码变

假设我有一个名为foo()的函数和一个类a。对于类a,它将出于某种目的使用foo(),但foo()不会使用类a的任何属性

在这种情况下,是将foo()作为类外的公共函数,还是将其作为类a的私有函数


你有一些选择它的推理规则吗?

取决于foo方法的用途?。如果任何其他类正在使用该方法,请在诸如utils或类似的通用类中创建它。如果foo()仅用于类A,则将其设置为类A中的私有对象。

无需将其设置为类成员。只需将其定义为类定义中的函数即可

这是一个很好的解释,说明了非成员函数实际上是件好事,可以使代码变得更好:

这也是一个很好的参考:

如果类a只调用过一次foo(),我建议将其作为a的私有成员函数。 否则,如果foo()位于文件范围,它将是一个自由函数。自由函数可能对全局名称空间构成威胁。如果在.h文件中使用内部链接或在.c文件中使用外部链接定义自由函数,则在程序集成过程中,它可能会与另一个同名函数定义发生冲突


如果多次使用foo(),那么将foo()作为静态函数放入实用程序类/结构将是一个好主意

如果
foo()
不访问类的状态,则没有理由使其成为成员。@ZdeslavVojkovic true,但这将是对
私有静态的一个很好的使用
不,它不会。如果它不使用类的任何成员,为什么它应该是类成员?这是一个实现细节,为什么要用它破坏类头呢?