C++成员函数与自由函数

sta*_*tor 29 c++ methods function

我在编写程序时很多时候一直对这个设计决策感到困惑,但是我不能100%确定何时应该将函数作为类的成员函数,何时将其保留为正常函数,其中其他源文件可以在头文件中公开函数声明时调用该函数.在大多数情况下,对类的成员变量的期望访问是否与决策有关?

Pio*_*ost 29

Herb Sutter 的接口原理

对于类X,所有函数(包括自由函数
)(a)"提及"X和
(b)都是"提供"X
在逻辑上是X的一部分,因为它们构成了X的接口的一部分.

深入讨论阅读命名空间和 Herb Sutter 的接口原理.

编辑
实际上,如果你想了解C++,请阅读Herb Sutter编写的所有内容:)

  • (+1).我也喜欢Scott Meyers的这篇文章:http://www.ddj.com/cpp/184401197.我认为斯科特和赫伯的文章相互补充. (9认同)
  • @Laurence,好吧,Sutter链接的"什么在课堂上"这篇文章解释了为什么自由函数是类的接口的一部分的理论基础,并解释了Koenig Lookup如何与"接口原理"相关(你需要点击[1]关于该链接文章的链接).但它没有解释何时应该创建自由函数,何时不能.这就是我联系Meyer的文章的原因,该文章提供了一些很好的规则和理由,为什么你通常更喜欢免费的功能.我认为,它们一起构成了完美的感觉. (3认同)
  • 我糊涂了。链接的文章是关于名称空间的,但问题不是询问名称空间。它询问何时拥有“自由函数”与“成员函数”。 (2认同)