什么是免费功能?

问题描述:

我听说过关于类,但在课外的函数。我的意思是,这些对于类的实现是有用的,因为它使用它,但它不在类体中,它在外面,在任何地方都没有。 所以,我想知道,写一个免费函数而不是只写一个成员函数有什么意义?什么是免费功能?

感谢您的回答。

+0

应该说,'std :: malloc'是你想象中的更好的并行宇宙中的一员,以及如何改进软件设计? –

免费功能提供更好的解耦和界面清晰度。当大多数算法逻辑都由*函数提供时,您的数据结构需要有明确的目的和适当的接口。其结果是代码可以最小化耦合,这是更容易推理,测试和依赖。通常,数据结构应尽可能小和尽可能大以满足一个单一的,特定的目的;数据结构应该通过合成来组合,并且逻辑应该由尽可能访问数据的公共接口的免费函数提供。

成员函数可能是方便,当然它需要有一些成员功能,提供上述接口,但它是一个大滑坡,并做了错误的,当你结束了类似std::string

+0

我不明白你的消息的最后部分:o – FeelZoR

+2

@FeelZoR'std :: string'是关于它的最终界面和避免状态混乱的僵尸启示录。 –

+0

这是否意味着我们应该避免它,并喜欢一个字符数组? – FeelZoR

如果函数不需要保持状态,那么没有理由使它成为类的一部分。 考虑

int add(int a, int b) { return a + b; } 

功能确实对自己的工作很好,它不需要一个类的对象。

+0

嗯,好的,谢谢,我看到^^ – FeelZoR