腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(9999+)
视频
沙龙
2
回答
MSVC
不能
返回
可以
复制
但
不能
移动
的
对象
、
、
、
、
在摆弄
复制
省略时,我遇到了这个奇怪
的
行为: GCC和Clang接受此代码,并且能够在这两种情况下使用
复制
省略。 在f1()中,
MSVC
抱怨它
不能
返回
o,因为Obj
的
移动
构造函数被删除了。但是,我希望它能够依赖于
复制
构造函数。这是
MSVC
中
的
一个bug,还是这种期望
的
行为(我不理解)和GCC / Clang过于宽松?如果我提供了一个move构造器,
MSVC
浏览 55
提问于2021-02-28
得票数 23
回答已采纳
2
回答
C++编译器
可以
为
返回
值使用
的
命名const变量执行RVO吗?
、
、
、
这个问题是相关问题
的
一个细微
的
变体。} {} 编译器能否为txt执行(命名
的
)
返回
值优化,即使str
的
类型与
返回
类型
的
foo不同,
浏览 2
提问于2019-05-17
得票数 5
回答已采纳
1
回答
返回
*&object时是否允许
复制
/
移动
省略?
、
} Foo f;} getFoo();C++14标准规定(12.8/31)允许
复制
/
移动
省略: 在具有类
返回
类型
的
函数中
的
返回
语句中,当表达式是具有与函数
返回
类型相同
的
cv- unqualified类型
的
非易失性自动
对象
(函数或catch-子句参数除外)
的</e
浏览 0
提问于2017-08-08
得票数 16
2
回答
为什么局部变量
的
一致性会抑制
返回
值
的
移动
语义?
、
、
、
、
即使变量将不再被访问(毕竟已经执行了return语句),即使声明为const
的
变量早已超出了作用域(参数表达式
的
计算已经完成),它仍然
不能
被
移动
,因此将被
复制
(如果不可能
复制
,则无法编译)。然而,函数体
的
实现细节会影响
返回
值
的
类型,并决定
返回
值是否
可以
用作其他函数
的
参数。这怎么能被认为是有用
的
呢?函数声明不足以确定函数
返回</e
浏览 5
提问于2013-04-18
得票数 16
回答已采纳
2
回答
用prvalue直接初始化:
MSVC
中
的
Bug?
、
、
、
、
return S{ 4, 2.0 }; } {} “结构'S‘
的
构造函数被声明为’显式
浏览 11
提问于2022-09-01
得票数 5
回答已采纳
1
回答
复制
构造函数
返回
临时
对象
、
我正在准备关于
复制
构造函数
的
讲座,发现如下:{ return mc;声明说: 如果我们调用myFunction,那么C++将创建一个新
的
myClass
对象
,该
对象
在myFunction
返回
时初始化为mc。因此,虽然您
的
代码可能表现得像透明地将
对象
从myFunction内部
移动
到代码
的
其余部分,但它实际上是在创建一个临时副本。我认为
浏览 1
提问于2016-06-09
得票数 1
回答已采纳
3
回答
哪些类应该是不可
复制
和不可
移动
的
?
、
大多数不可
复制
的
对象
都是不可
复制
的
,因为拥有多个
对象
(例如std::unique_ptr)是无意义
的
或有问题
的
,
但
移动
它们仍然
可以
。但是,有什么好
的
理由让一个
对象
既
不能
复制
也
不能
移动
呢?
浏览 1
提问于2014-03-01
得票数 2
3
回答
了解与c++11相关
的
扩展规则
、
我一直在测试右值引用和
移动
语义,并希望确保我理解什么时候应该删除一个副本,什么时候它应该遵循
移动
语义。complier may elide this NVCRA B = GetACopy(); 在这种情况下,
移动
语义不起作用,与c++11中
的
C++03
的
唯一区别是,不允许编译器省略它们,而是要求它们省略。那么问题1.在什么情况下我
可以
保证
复制
构造函数
浏览 4
提问于2012-02-14
得票数 4
回答已采纳
2
回答
C++11 -我失去了一个
移动
/
复制
任务
、
我在另一个问题中发布了这段代码,但我对它有了新
的
怀疑:#include <string>using namespace stdx1 has a move constructor } X默认构造函
浏览 4
提问于2013-04-02
得票数 4
回答已采纳
2
回答
现代C++能让你免费获得性能吗?
、
、
、
、
对齐通常遵循
移动
语义,因为在某些情况下,右值构造函数是自动生成
的
,或者现在是STL
的
一部分。现在我想知道这些情况以前是否已经由RVO或类似的编译器优化处理过了。我
的
问题是,您是否
可以
给我一段C++98代码
的
实际示例,它不需要修改就
可以
使用支持新语言功能
的
编译器更快地运行。我确实理解符合标准
的
编译器不需要做
复制
省略,正因为如此,
移动
语义可能会带来速度,但我希望看到一个不那么病态
的
情况
浏览 0
提问于2014-12-22
得票数 208
回答已采纳
3
回答
通过值传递论点时
的
奇怪行为
、
、
偶然发现有几篇文章声称,如果函数无论如何都要
复制
,通过值传递
可以
提高性能。 我从未真正想过如何在引擎盖下实现按值传递。当您这样做时,堆栈上到底会发生什么:f=f(g(H))?经过一番思考,我得出结论,我将以这样
的
方式实现它,即在f()期望它存在
的
位置上创建g()
返回
的
值。因此,基本上没有
复制
/
移动
构造函数调用- f()只会获取g()
返回
的
对象
的
所有权,并在执行离开f()<
浏览 8
提问于2016-10-01
得票数 2
回答已采纳
3
回答
从临时
对象
创建复合
对象
可以
被优化吗?
、
、
我问了一些关于这个问题
的
问题,但我得到了不同
的
回答,所以我认为最好直接问它。与创建A和B并在堆栈上传递对它们
的
引用
的
调用约定不同,A和B应该创建并通过值传递,而不是
返回
值c。对于NRVO,这将意味着创建它们并将它们直接传递到x中,而不需要create_c函数做进一步
的
工作。这将避免创建A和B
的
副本
的
需要。 有没有办法允许/鼓励/强制编译器这样做,或者优化编译器通常会这样做?这是只在编译器内联函数时才起作用,还是在编译单元之间起作用。
浏览 3
提问于2011-05-03
得票数 4
回答已采纳
2
回答
范围::等于
可以
用作一对transform_view范围
的
谓词吗?
、
、
、
示例程序和编译器错误error C2672第二个错误似乎与std::ranges::equal::operator()
的
约束有关。\include\algorithm
的
源代码,ranges::equal是class _Equal_fn
的
一个实例,_Equal_fn::operator()具有约束requires indirectly_
浏览 10
提问于2022-04-18
得票数 1
回答已采纳
1
回答
运算符重载: MSVS正常,
但
g++失败
、
我有在Visual Studio2010中编译没有错误
的
代码。CComplex.cpp:15: note: candidates are: Complex::Complex(Complex&)请告诉我我
的
代码有什么问题
浏览 0
提问于2012-08-17
得票数 0
回答已采纳
2
回答
在
msvc
2010中按左值
移动
是否已损坏/未完成?
、
我不知道为什么这个代码
不能
工作。this_显示为0xccccccccc,v不再是4。为什么? 注意:我正在尝试使用左值/
移动
语义。
浏览 10
提问于2011-04-08
得票数 1
回答已采纳
2
回答
投掷活动物体
、
、
我注意到,当抛出
的
类型是可
移动
的
时,
MSVC
和g++处理临时异常
对象
的
创建方式略有不同。找出这些问题会引起更多
的
问题。在进一步讨论之前,这里是我问题
的
核心:在
复制
/
移动
省略
的
概念中,标准中谁能很好地说明如何创建临时异常
对象
?当抛出一个
对象
时,异常
对象
是否得到(a)
复制
构造,(b)在适当情况下
移动
构造,
浏览 6
提问于2011-06-15
得票数 15
回答已采纳
3
回答
C++
移动
构造函数和作用域
、
、
、
如果我在堆栈上声明了一个
对象
,并且
返回
了对它
的
引用,我相信我将
不能
再访问它了,因为它超出了范围。对,是这样?在何种情况下将调用析构函数?
浏览 9
提问于2014-03-22
得票数 1
回答已采纳
2
回答
为什么g++允许
返回
不可
复制
的
类?
、
、
、
我为不可
复制
的
类创建了这个基类:{ non_copyablemanager{ manager() } };manager get() return manager
浏览 0
提问于2018-03-12
得票数 5
回答已采纳
1
回答
返回
语句中使用
的
局部变量不隐式转换为r值以匹配转换运算符。
、
、
、
、
在下面的示例代码段中,return语句中使用
的
局部变量不隐式转换为r值以匹配转换操作符。但是,对于move构造函数,它
可以
工作。我在MicrosoftVisualStudio2019(版本16.8.3)中,在
的
“许可-”模式下测试了它,它产生了一个编译器错误。但在‘允许’模式下,这是
可以
的
。
浏览 2
提问于2020-12-13
得票数 1
回答已采纳
2
回答
无例外并
复制
、
移动
构造函数
、
、
当move构造函数为noexcept(false)时,无论我往哪里看,似乎都一致认为标准库必须调用
复制
构造函数,而不是move构造函数。我不明白为什么没有,除非这是一个关注点,例如向量。我
的
意思是,如果T不这样做,vector::resize()应该如何能够提供强大
的
异常保证。在我看来,向量
的
异常级别将依赖于T,无论使用
的
是
复制
还是
移动</em
浏览 1
提问于2015-02-20
得票数 22
回答已采纳
点击加载更多
相关
资讯
中国移动:非独立组网明年不能入网,但今年买的5G手机却不影响
数据库管理系统为用户和应用程序提供了_____语言,用此语言可以定义数据库的模式结构,但执行后不能回滚
程序打包问题及解决方法汇总
C+23 特性概览
当前,我国中小企业数字化转型需求迫切,但仍存在“不会转、不能转、不敢转”问题。瞄准中小企业数字化转型的堵点、痛点和难点,随着移动
热门
标签
更多标签
云服务器
ICP备案
对象存储
实时音视频
云直播
活动推荐
运营活动
广告
关闭
领券