首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查询临时对象

查询临时对象
EN

Stack Overflow用户
提问于 2011-01-21 03:39:56
回答 2查看 132关注 0票数 4

在Exceptional C++的第10项中,它讨论了临时的使用(如果你有这本书,在第35页的顶部"...也就是返回到目的地的临时副本“)。

代码是

代码语言:javascript
复制
template<class T>
T Stack::<T>::Pop()
{
...
T result = ...
return result;
}

...


string s1(s.Pop());

我不太清楚什么是临时创建的,在哪里创建的,为什么创建的。

当你从一个函数中通过值返回一个对象时,一个临时的总是创建的吗?为什么?它的范围是什么?在这种情况下,s1是复制构造的,大概是从临时的?为什么它不能从函数中的结果对象构造?

提亚

- EDIT -我想我弄糊涂了,因为这本书使用了复制这个术语,它用来表示操作的含义,而我认为它的意思是复制。总体而言,这本书写得很清楚,但这一段可能还不够清楚。

EN

回答 2

Stack Overflow用户

发布于 2011-01-21 03:42:20

函数的未命名返回值是临时的。它被创建为函数的返回值,然后传递给string的复制构造函数,然后立即销毁。

票数 2
EN

Stack Overflow用户

发布于 2011-01-21 03:45:46

返回值是正在创建的临时值。一些编译器实现了一种叫做return value optimization的东西,它避免了额外的拷贝构造。

请注意,T result = ...行还在原始文本中创建了一个副本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4751733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档