C ++新手,并尝试学习优化技巧,所以希望有人可以为我澄清。
这两个选项之间是否存在真正的区别:
1)存储参数并传递给函数
const char *text = getText(var)
doSomething(text);
2)传递给参数的函数调用
doSomething(getText(var));
我不熟悉计算机科学,以便在进入编译阶段时意识到差异,不幸的是,任何帮助都会很棒!
答案 0 :(得分:6)
存在技术差异:
doSomething(getText(var));
doSomething
的参数是一个右值,而在
doSomething(text);
论证是一个左值。但是,在绝大多数情况下,这是无关紧要的,并且这两行应该在任何合适的编译器上产生等效的机器代码,因此选择您发现的任何更易读的内容。
答案 1 :(得分:4)
假设text
仅用于调用doSomething()
,编译器肯定会在两种情况下生成相同的代码。
唯一的区别在于你如何看待两者之间的可读性以及调试器在getText()
和doSomething()
之间停留的容易程度,如果有必要的话。