C ++我需要本地扩展还是外部方法?

时间:2011-04-11 19:34:45

标签: c++ design-patterns refactoring

我不熟悉C ++,不知道这两个非常相似的重构(引入本地扩展并引入外部方法)将在哪里。我知道强制使用这些的情况,但我无法想象需要这个“技巧”的示例类。我正在制作C ++重构教程,以帮助新开发人员,但看起来我也需要你的帮助:))

如果你使用它,请告诉我在哪里以及为什么。提前谢谢。

1 个答案:

答案 0 :(得分:1)

“外来”方法是对类进行操作但不是类的成员的方法。在Java中,这仅仅意味着将第一个类作为参数的其他类的(静态)方法。在C ++中,您需要了解 free 函数。与Java不同,在C ++中,方法可以存在于类之外。 int main()是最着名的一个。 STL还包含免费功能。只是偷看一下。

对于Java,您链接的网站建议"foreign methods are a work-around"并建议“引入本地扩展”作为替代重构。在C ++中,自由函数不是一种解决方法。这意味着引入本地扩展的压力要小得多。

此外,在C ++中,函数默认情况下不是虚拟的,并且对象通常按值传递。这意味着“引入本地扩展”技术经常失败。

我希望这能够显示您的方法的基本问题:您正在采用Java的重构技术,它解决了特定的Java弱点,并尝试将它们转换为具有相当不同的弱点集的C ++。即使它起作用,也常常没必要。