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