腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(9999+)
视频
沙龙
1
回答
当
使用
返回值
赋值
的
变量
调用
函数
get
时
,
C++
返回值
优化
(
RVO
)
是
如何
工作
的
?
、
它可以
工作
,但它很难看,而且容易出错。所以我想一个更好
的
方法
是
使用
现代
的
c++
。传递引用应该比传递vectors<...>更快,所以我这样做了。由于不能直接交换引用,因此我将其拆分为两个
函数
,并依靠
返回值
优化
来交换引用。我
使用
的
是
针对x86_64-apple-darwin19.6.0
的
MacOSClang11.0.3。我认为这是因为
RVO</e
浏览 18
提问于2020-09-21
得票数 1
4
回答
为什么总是在按值返回时
调用
复制构造
函数
?
当
一个
函数
按值返回一个对象
时
,它将
调用
复制构造
函数
来创建一个临时
的
(除非应用了
RVO
)。该临时设备在
使用
后将被销毁。例如,为什么编译器没有对以下代码进行“
优化
”以跳过临时创建和销毁?MyClass b;在(1)中,
返回值
被
赋值
给另一个
变量
,并且
RVO
很可能应用。但是在
浏览 0
提问于2016-02-01
得票数 2
回答已采纳
2
回答
为什么在设置对象等于另一个
函数
的
返回值
时
调用
移动构造
函数
/
赋值
?
Move ConstructorDestructorDestructor我不太清楚为什么在执行b1 = send(b2)
时
使用
移动构造
函数
,然后
使用
赋值
。
浏览 0
提问于2018-02-22
得票数 0
回答已采纳
1
回答
C++
:
RVO
、NRVO和返回本地对象
、
、
我刚刚读到了
RVO
(
返回值
优化
)和NRVO (名为
返回值
优化
)。下面
是
两个例子Bar Foo() return Bar();Bar Foo() Bar bar;return bar;这是合理
的
,一个很好
的
编译器
优化
。但是,我从Stanley
的
&quo
浏览 2
提问于2014-12-31
得票数 1
回答已采纳
5
回答
C++
编译器是否
优化
按值返回
的
成员
变量
、
、
当
函数
返回
的
变量
超出作用域
时
,我对
C++
返回值
优化
有很好
的
理解,但是返回成员
变量
呢?length before clear: 4显然,obj.name().clear()作用于临时副本,但是对obj.name.length()
的
调用
又
如何
呢std::string::length()
是
cons
浏览 2
提问于2012-06-16
得票数 0
回答已采纳
2
回答
RVO
是否适用于这种情况?
、
、
、
假设我们有这种情况{}
RVO
在这里申请吗?我认为答案是否定
的
,因为应用
RVO
的
规则之一
是
:“如果
函数
按值返回类类型,而返回语句
的
表达式
是
具有自动存储持续时间
的
非易失性对象
的
名称(该对象不是
函数
参数,或者一个catch子句参数),而具有与
函数<
浏览 0
提问于2016-12-03
得票数 7
回答已采纳
2
回答
当
一个
函数
创建
的
返回值
被实际
使用
时,我
如何
只支付该
返回值
的
成本?
、
、
、
、
,
当
返回值
实际上没有被
使用
时,编译器会对其进行
优化
。但是,我不相信编译器可以针对新创建
的
非基本类型
的
返回值
进行
优化
。,尽管没有
使用
返回类型,但这并不意味着避免创建该类型
是
安全
的
。然而,在这种情况下,
当
函数
的
返回值
未被
使用
时,最好不要创建类型。 是否有某种方法可以通知编译器,如果没有
使用
返回类型
浏览 0
提问于2013-12-12
得票数 0
2
回答
函数
的
调用
方
如何
知道是否
使用
了
返回值
优化
?
我对
返回值
优化
的
理解
是
,编译器秘密地传递将在其中存储
返回值
的
对象
的
地址,并对该对象而不是局部
变量
进行更改。string x = "hi";}std::string s;{}
当
RVO
被
使用
时。这意味着
函数</e
浏览 5
提问于2013-09-05
得票数 10
回答已采纳
2
回答
返回类型和移动语义
、
、
b); }{ g("hello"); }也就是说,
当
f返回移动构造
函数
时
,在相同
的
行上
调用
,移动构造
函数
也应该在g返回
时
被
调用
。
浏览 2
提问于2014-04-11
得票数 0
回答已采纳
2
回答
如何
确保执行
RVO
而不是复制?
、
、
我了解到unique_ptr/shared_ptr可以用于工厂模式(例如,) 同时,我了解到在许多编译器(例如,)中
返回值
优化
(
RVO
)
是
可能
的
。我更喜欢
RVO
,因为不用包装unique_ptr就可以更容易地
使用
返回
的
值,并且更容易阅读代码,但是,由于
RVO
没有得到保证,我不想意外地牺牲性能,必须
使用
unique_ptr来确保返回
的
值
是
moved是否有任何方法可以显式地指
浏览 23
提问于2020-03-05
得票数 5
1
回答
当值被复制到存在
的
对象中
时
,(N)
RVO
也会发生吗?
、
、
(N)
RVO
有助于避免在将
返回值
分配给新
变量
时
不必要地复制和创建临时对象(从而避免复制构造
函数
)。所以像这样
的
东西应该由
RVO
来
优化
: return MyObj();但是,
当
调用
站点对象已经存在
时
,(即在
使用
=运算符而不是复制构造
函数
的
情况下)。
浏览 2
提问于2015-10-25
得票数 0
回答已采纳
3
回答
C++
:编译器在多少方面
优化
了我们
的
代码?
、
、
、
我想知道所有可能
的
方式(或者至少
是
流行
的
方式),编译器可以/确实
优化
我们用
C++
编写
的
代码?我也想知道
优化
到底
是
如何
完成
的
(在每种情况下)! 到目前为止,我注意到了两个
优化
,即。空基
优化
(EBO)和
返回值
优化
(
RVO
)。还有些什么?我听说过“常量”
优化
,“未
使用
的
<
浏览 1
提问于2010-12-03
得票数 1
回答已采纳
6
回答
返回值
优化
-
C++
析构
函数
调用
、
、
下面的代码
调用
析构
函数
4次:using namespace std; public: A(){cout<<"A"<<endl;}我在想应该只有三次析构
函数
调用
。
浏览 43
提问于2012-02-12
得票数 5
4
回答
C++
函数
返回向量/字符串,但不返回数组
、
、
据说,当我们试图从这个
函数
的
外部(通过
返回值
)访问数组
时
,我们遇到了一个问题,因为我们试图访问
的
内存不在您正在
使用
的
作用域(
函数
调用
的
堆栈)中。当我们返回std::string或std::vector
时
,不也会发生同样
的
问题吗?std::vector
是
在
函数
内部声明
的
,或者
C++
会复制字符串或向量,并将副本返回
浏览 0
提问于2013-04-12
得票数 1
回答已采纳
2
回答
返回本地是否也涉及到为返回创建临时?
我来自Java,那里
的
任何东西都是引用,所以我试图弄清楚
c++
实例创建
的
基础。getEmp(int a) { return local;Employee myEmp = m.getEmp(10);谢
浏览 0
提问于2012-10-02
得票数 0
回答已采纳
2
回答
为什么返回参数
时
不允许
使用
RVO
?
、
、
、
.:{ X(const X& other)
浏览 28
提问于2012-02-25
得票数 25
回答已采纳
2
回答
如果新对象是一个参数,并且可以修改,请避免构造新对象
= ifPositive[i]; out[i] = ifNegative[i]; return out;现在,这段代码通常
工作
得很好,但如果
函数
的
左侧
是
参数之一,则会有一些不必要
的
构造
函数
/析构
函数
调用
: curVal = trigger.choose(posVal, curVal); // construct is calledin choos
浏览 0
提问于2013-06-27
得票数 1
回答已采纳
5
回答
什么时候添加一个移动构造
函数
和一个移动
赋值
操作符才能真正起作用呢?
、
、
、
、
考虑到当今编译器在
返回值
优化
方面的高质量(
RVO
和NRVO),我想知道开始添加移动构造
函数
和移动
赋值
操作符实际上有多大
的
类复杂性。例如,对于这个really_trivial类,我只是假设在复制它
的
实例
时
,move语义不能提供比
RVO
和NRVO更多
的
东西:{ really_trivial()
浏览 0
提问于2011-01-18
得票数 5
回答已采纳
3
回答
C++
:引用返回到按值返回
、
tempClassA} tempClassA
的
“副本”被创建并传递给ClassA
的
复制构造
函数
(以初始化obj2)?因此,传递给复制构造
函
浏览 1
提问于2012-08-30
得票数 4
回答已采纳
1
回答
用prvalue
函数
初始化对象
的
结果可以
调用
move构造
函数
吗?
、
、
为了返回prvalue,我尝试对
RVO
做类似的事情: bool b; return test_
rvo
(p); test_
rvo
result(tester这意味着p和this<em
浏览 2
提问于2022-07-01
得票数 1
回答已采纳
点击加载更多
热门
标签
更多标签
云服务器
ICP备案
云直播
即时通信 IM
实时音视频
活动推荐
运营活动
广告
关闭
领券