在OOP C ++中内联函数的正确方法

时间:2013-07-12 20:23:11

标签: c++

我有一个简单的等式,需要在我的代码中调用大约100次。我正在尝试将函数开销保持在最低限度,但仍然使用OOP概念(这对我来说是新的)。等式只是一个简单的计算两个差异的最大值。它就像3行。我应该使用内联函数吗?如果是这样,通常使用它的方式是什么(即我应该创建一个单独的.h文件,将它放在基类中(使用此函数的所有对象都是间接派生的)。

3 个答案:

答案 0 :(得分:2)

除非您的编译器具有良好的链接时间优化功能(并且它们已启用),否则必须在头文件中声明和定义要内联的整个函数。至于专门为你的内联函数提供.h文件,或者把它放在你的类层次结构中,即使你给了我们剩下的代码和/或设计,我们也无法告诉你。对于唯一正确的方法,它实际上比预定义的规则更具风格选择。

编辑:澄清:如果您的内联函数仅用于单个源(.cpp)文件,您可以在与static inline相同的文件中声明它。如果您希望多个源文件可以访问它,那么将它放在头文件中。

答案 1 :(得分:1)

是的,如果他们不是inline,您可以使用virtual个功能成员。但是在每个使用此内联函数的文件中都应该出现它的定义,因此将此函数的实现放在* .h文件中是个好主意。如果它是虚拟的,你根据标准不能使用内联(尽管gcc允许)。

但在任何情况下,标准都不保证内联您的功能 - 即使您将其标记为inline

答案 2 :(得分:1)

我不会在类中放置这样的函数,除非它需要使用类的某些状态,或者是否有充分的理由将其使用限制在该类层次结构中。

.h中命名空间内的内联函数听起来像是一个很好的方法。通过将其放在命名空间中,您可以使用公共名称max而不必担心它在全局命名空间中,然后您可以收集适合该域的任何函数。

虽然它只是一个最大功能可能只是使用std::max function会是一个不错的选择吗?

一般情况下,如果可能,最好重复使用。它可以节省时间并降低维护成本。每个人都非常知道std :: max是什么,但其他一些max需要一些搞清楚。

相关问题