社区
C++ 语言
帖子详情
C++函数返回String时,编译器有时拷贝返回,有时直接原对象
qq_41582834
2021-02-24 12:32:06
如下两种情况下, 为什么当string 出现在 if 分支中的时候 函数返回对象时,不再继续返回原有对象,而是进行了拷贝呢?
代码如下:
执行结果:
...全文
261
4
打赏
收藏
C++函数返回String时,编译器有时拷贝返回,有时直接原对象
如下两种情况下, 为什么当string 出现在 if 分支中的时候 函数返回对象时,不再继续返回原有对象,而是进行了拷贝呢? 代码如下: 执行结果:
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
真相重于对错
2021-02-24
打赏
举报
回复
复制消除大致的机理是这样的 T fun(){ T t1; ... return t1; } T a=fun(); //这里如果没有复制消除则 要调用一此复制构造函数。 引入了复制消除机制,就是 fun(T& a.....)//这里就是把a作为一个引用传入fun,在fun中直接用a 替代了t1;这样当fun返回时,就减少一次复制。 但是你的函数有两个返回点,则编译器无法确定用a 替代哪一个,所以复制消除失效。
colorfulcode
2021-02-24
打赏
举报
回复
编译器的返回值优化
forever74
2021-02-24
打赏
举报
回复
编译器优化这种事,对于猿来说,看起来很玄。
真相重于对错
2021-02-24
打赏
举报
回复
百度 复制消除。。。。。。
实战
c++
中的
string
系列--
函数
返回
局部变量
string
(引用局部
string
,局部
string
的.c_str()
函数
)
当
函数
返回
字符串的
时
候,我们可以定义
返回
string
和
string
&。1写一个
返回
string
引用的
函数
std::
string
& Test
String
Reference() { std::
string
loal_str = "holy shit"; return loal_str; }这个
函数
当然是错误的,...
C++
函数
返回
值为
对象
时
调用复制构造
函数
的问题
C++
函数
返回
值为
对象
时
调用复制构造
函数
的问题 知识点:
C++
中调用复制构造
函数
的三种情况: 通过一个
对象
构造另一个
对象
调用参数为
对象
的
函数
调用
返回
值为
对象
的
函数
– 上述知识点在各种书籍、博客都无不同,...
C++
类与
对象
:
拷贝
构造
函数
&浅
拷贝
拷贝
构造
函数
C++
String
类的构造
函数
、
拷贝
构造
函数
的实现
构造
函数
、析构
函数
与赋值
函数
是每个类最基本的
函数
,在一些公司的面试中也会...对于任意一个类A,如果不手动编写上述
函数
,
C++
编译器
将自动为类A生成四个缺省的
函数
: A(void); // 缺省的无参数构造
函数
A(con
c++
函数
返回
对象
还是
对象
的引用以及复制构造
函数
的问题
由
c++
运算符重载
函数
的
返回
值引起,讨论
函数
返回
对象
和
对象
的引用的区别,以及复制构造
函数
中的浅
拷贝
和深
拷贝
问题
C++ 语言
65,211
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章