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

时间:2013-11-15 22:48:21

标签: c++ function

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

在这种情况下,我应该将foo()作为一个常用函数放在类之外,还是将它保存为A类的私有函数?

你有选择的推理规则吗?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

没有必要让它成为班级成员。只需将其定义为类定义中的函数即可。

这是一个很好的解释,非会员功能实际上是好事,可以使你的代码更好:http://www.ddj.com/cpp/184401197

这也是一个很好的参考:http://www.gotw.ca/gotw/084.htm

答案 2 :(得分:0)

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

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