我有一个代码
void Foo()
{
auto index = currentIndex();
if (index.isValid())
index.doSomething();
}
另外的选择
void Foo()
{
if (currentIndex().isValid())
currentIndex().doSomething();
}
第二个对我来说更具可读性。但它的性能如何?currentIndex()
在当前流行的编译器中计算两次?如果currentIndex()
是一个需要一些 CPU 时间的大函数,编译器是否会将第二个优化为第一个?