由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问个C++ 编译器临时变量的问题
相关主题
C++ 面试题一个基本的string问题
请教一个C++问题1道brianbench 的题 c++
从Simplify Path问面试编程语言选择?请教c++的string vector问题,谢谢!
大牛来做一下这道题Riverbed 面经
const_reverse_iterator和reverse_iterator有什么区别?攒人品之facebook电面面经
copy constructor 的问题请问一道题
a very general c++ question攒个人品,发个google电话面试题
C++ Q83: 这个const_cast什么意思?贴一个OJ 的 longest valid parenthesis
相关话题的讨论汇总
话题: string话题: s1话题: const话题: s2话题: add2
进入JobHunting版参与讨论
1 (共1页)
q****x
发帖数: 7404
1
string add(const string& s1, const string& s2)
{
string s = s1 + s2;
return s;
}
string add2(const string& s1, const string& s2)
{
return (s1 + s2);
}
记得有参考书说add2()会比add()快,因为编译器直接生成一个临时变量云云。谁能详
细解释一下细节?
q****x
发帖数: 7404
2
this one?
http://en.wikipedia.org/wiki/Return_value_optimization

【在 q****x 的大作中提到】
: string add(const string& s1, const string& s2)
: {
: string s = s1 + s2;
: return s;
: }
: string add2(const string& s1, const string& s2)
: {
: return (s1 + s2);
: }
: 记得有参考书说add2()会比add()快,因为编译器直接生成一个临时变量云云。谁能详

i**d
发帖数: 357
3
lz如果想深入了解C++这些问题,可以去看看Inside C++ object model这本书。
本质来说,Add里是多产生一个对象S,然后S返回的时候会再产生一个对象。
d********t
发帖数: 9628
4
似乎只有在return作为lvalue的时候compiler才会做优化。

【在 q****x 的大作中提到】
: string add(const string& s1, const string& s2)
: {
: string s = s1 + s2;
: return s;
: }
: string add2(const string& s1, const string& s2)
: {
: return (s1 + s2);
: }
: 记得有参考书说add2()会比add()快,因为编译器直接生成一个临时变量云云。谁能详

1 (共1页)
进入JobHunting版参与讨论
相关主题
贴一个OJ 的 longest valid parenthesisconst_reverse_iterator和reverse_iterator有什么区别?
问个Zenefits电面题目,他家好难。。。copy constructor 的问题
问个C++的题目a very general c++ question
help: c++ interview questionC++ Q83: 这个const_cast什么意思?
C++ 面试题一个基本的string问题
请教一个C++问题1道brianbench 的题 c++
从Simplify Path问面试编程语言选择?请教c++的string vector问题,谢谢!
大牛来做一下这道题Riverbed 面经
相关话题的讨论汇总
话题: string话题: s1话题: const话题: s2话题: add2