社区
C++ 语言
帖子详情
C++函数返回String时,编译器有时拷贝返回,有时直接原对象
qq_41582834
2021-02-24 12:32:06
如下两种情况下, 为什么当string 出现在 if 分支中的时候 函数返回对象时,不再继续返回原有对象,而是进行了拷贝呢?
代码如下:
执行结果:
...全文
237
4
打赏
收藏
C++函数返回String时,编译器有时拷贝返回,有时直接原对象
如下两种情况下, 为什么当string 出现在 if 分支中的时候 函数返回对象时,不再继续返回原有对象,而是进行了拷贝呢? 代码如下: 执行结果:
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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; }这个
函数
当然是错误的,
编译器
会提示我们:
返回
局部变量或临
时
变量的地址: loal_str 即
C++
函数
返回
值为
对象
时
调用复制构造
函数
的问题
C++
函数
返回
值为
对象
时
调用复制构造
函数
的问题 知识点:
C++
中调用复制构造
函数
的三种情况: 通过一个
对象
构造另一个
对象
调用参数为
对象
的
函数
调用
返回
值为
对象
的
函数
– 上述知识点在各种书籍、博客都无不同,属于
C++
的标准 – 但是实际测试的
时
候,当调用
返回
值为
对象
的
函数
时
,并未按预想地调用复制构造
函数
。 – 在查阅了很多博客资料后,
原
因如下: 当调用
返回
值为
对象
的
函数
时
,系统消耗调...
C++
类与
对象
:
拷贝
构造
函数
&浅
拷贝
拷贝
构造
函数
c++
函数
返回
对象
还是
对象
的引用以及复制构造
函数
的问题
由
c++
运算符重载
函数
的
返回
值引起,讨论
函数
返回
对象
和
对象
的引用的区别,以及复制构造
函数
中的浅
拷贝
和深
拷贝
问题
C++
string
类(包括深浅
拷贝
)
目录一.字符码表一.为什么用
string
类二.使用标准库中的
string
类1.
string
类2.
string
中的常用接口说明(1)
string
类
对象
的常见构造(2)
string
类
对象
访问及遍历操作(3)
string
类
对象
遍历方式(4)
string
类
对象
的容量操作(5)
string
类
对象
的修改操作(6)
string
类非成员
函数
三.浅
拷贝
与深
拷贝
1.浅
拷贝
2.深
拷贝
四.
string
类的分部模拟实现(包括传统写法和现代写法)1.私有成员2.构造
函数
3.
拷贝
构造
函数
(1)传统写法(2)现代写法4.赋值运算符重载(1
C++ 语言
65,199
社区成员
250,520
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章