社区
C++ 语言
帖子详情
C++函数返回String时,编译器有时拷贝返回,有时直接原对象
qq_41582834
2021-02-24 12:32:06
如下两种情况下, 为什么当string 出现在 if 分支中的时候 函数返回对象时,不再继续返回原有对象,而是进行了拷贝呢?
代码如下:
执行结果:
...全文
299
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
打赏
举报
回复
百度 复制消除。。。。。。
string
类的介绍与使用【
C++
】
string
类是编程语言中用于表示和操作字符串的基本数据类型或类。它提供了一系列方法和操作,允许开发者对字符串进行创建、修改、查找、比较、转换等。
string
类通常具有不可变性,意味着一旦创建了字符串
对象
,其内容就不能被修改,但可以创建新的字符串
对象
来表示修改后的内容。这种特性有助于在多线程环境中保持数据的安全性。
string
类还提供了各种构造
函数
、操作符重载和格式化功能,使字符串操作更加灵活和高效。
C++
标准库之
string
返回
值研究
先说结论(不一定适用所有环境): 1)GCC默认开启了
返回
值优化(RVO),除非编译
时
指定“-fno-elide-constructors”; 2)现代
C++
编译器
一般都支持
返回
值优化; 3)
string
的
拷贝
构造和
拷贝
赋值是浅
拷贝
。 测试环境: 1)gcc(GCC)4.8.5 2)g++(GCC)4.8.5 3)libstd
c++
.so.6.0.19 ...
C++
教你如何模拟实现
string
,如何实现
string
写
时
拷贝
本文将要对STL容器
string
进行模拟实现,将要实现
string
常用构造
函数
,析构
函数
,
拷贝
构造
函数
以及常用增删查改接口,介绍如何通过
函数
复用以达到简化代码,如何通过写
时
拷贝
提高程序效率,通过模拟实现达到加深对
string
的理解,提高自身编程技巧的效果。
C++
基础之编写
String
类(
拷贝
构造
函数
)
拷贝
构造
函数
的本质:一种
函数
,特殊的构造
函数
拷贝
构造
函数
的写法:和
【
C++
语言】字符串
String
类的深
拷贝
与浅
拷贝
拷贝
对象
时
,需要创建相同的字节序、类型、和资源。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章