在 Exceptional C++ 中,第 10 项,它讨论了临时文件的使用(如果你有这本书,第 35 页顶部“......即,将返回的临时文件复制到目标中”)。
代码是
template<class T>
T Stack::<T>::Pop()
{
...
T result = ...
return result;
}
...
string s1(s.Pop());
我不太清楚在何处以及为何创建临时文件。
当你从一个函数中按值返回一个对象时,是否总是创建一个临时对象?为什么以及它的范围是什么? 在这种情况下 s1 正在被复制构造,大概是从临时的?为什么不能从函数内的结果对象构造出来?
TIA
-------- 编辑-------- 我想我很困惑,因为这本书使用了术语拷贝,并且在我认为它的意思是复制时将它与操作的含义一起使用。 总的来说,这是一本很好的清晰的书,但是这个特定的段落可能并不像它应该的那样清晰。
最佳答案
函数的未命名返回值是临时值。它作为函数的返回值创建,然后传递给 string
的复制构造函数,然后迅速销毁。
关于c++ - 查询临时对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4751733/