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