【发布时间】:2010-11-06 08:28:37
【问题描述】:
我在 MyClass 类下定义了一个内联成员函数
int MyClass::myInlineFunction();这个函数是从我的代码中的几个地方调用的。
调用此函数有两种方式
案例1:每次调用函数时都使用this。
案例2:将此函数的结果赋值给一个变量,并用于后续访问
var = mobj->myInlineFunction() ;应该首选哪一个??
【问题讨论】:
标签: c++ inline-method
我在 MyClass 类下定义了一个内联成员函数
int MyClass::myInlineFunction();这个函数是从我的代码中的几个地方调用的。
调用此函数有两种方式
案例1:每次调用函数时都使用this。
案例2:将此函数的结果赋值给一个变量,并用于后续访问
var = mobj->myInlineFunction() ;应该首选哪一个??
【问题讨论】:
标签: c++ inline-method
即使性能不是问题,我也会使用案例 2。如果您只关心这个函数的结果,那么将其分配给一个变量可以让您稍后轻松切换到另一种获取此结果的方法。
【讨论】:
在不知道什么或位置的情况下进行优化通常会导致更复杂的代码,而不是比原始代码快。
对我来说,确定使用哪种解决方案的标准并非基于您提供的信息。
【讨论】:
不幸的是,没有一个简单的答案,这取决于功能。
如果函数是微不足道的,像 { return 6; },每次都调用它。编译器将内联调用并删除代码。您应该发现将其分配给变量之间没有区别。
如果函数更复杂,则可能值得将其分配给变量。整个程序中的值是否恒定?那么也许可以在类中添加一个包含该值的静态成员?
【讨论】:
据我所知,我无法理解内联函数和将其分配给函数指针之间的关系。
编辑:: 谢谢艾哈迈德,
这取决于实际情况,不能总是用另一种方式代替。
同样,如果两者都有效,至少第一种方法对我来说更清楚。
【讨论】:
如果函数每次调用都返回相同的结果,则必须使用 case 2,因为使用 case 1 没有意义,即使它是内联函数
【讨论】:
关于是否保留返回值或再次调用函数的决定不应基于函数是否内联 - 因为这是一个实现细节,可能会随着类的生命周期/演变而改变.根据经验,如果它不会使代码过于复杂,我将始终坚持返回值,因为您不知道作为一个类的用户,函数的成本是多少 - 今天便宜的可能是明天贵。所以我会选择案例 2。
【讨论】:
如果函数执行需要一些时间的操作,案例 2 可以为您提供很多性能。 选择它如果
【讨论】: