c++ - 查询临时对象

标签 c++

在 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/

相关文章:

自动生成 cmakelists.txt 的 C++ IDE

c++ - 模板函数的默认值,功能参数

C++分离线程在其关联对象被删除后继续工作

c++ - 获取时间戳的最快方法

c++ - 如何访问和读取 C++ 文件中的各行?

C++,如何返回基类,然后将其转换为派生类?

c++ - 在哈希表中查找项目的位置

c++ - 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小变得更大

c++ - 如何正确初始化模板类型的成员变量?

c++ - 如何在 Microsoft SAPI 中使用 SetNotifyCallbackFunction()?