首页 > 其他分享 >返回值优化

返回值优化

时间:2022-11-29 16:02:56浏览次数:26  
标签:临时 return int Person 返回值 优化 指针

无返回值优化

以前写的随笔提到了不要返回局部变量的指针

 

 但为什么黑马程序的视频中主函数第一次打印还能正常的输出呢。事实上在执行 return 语句时系统是在内部自动创建了一个临时变量,然后将 return 要返回的那个值赋给这个临时变量。所以当被调函数运行结束后 return 后面的返回值真的就被释放掉了,最后是通过这个临时变量将值返回给主调函数的。因此上面的程序在执行return语句时创建了一个临时指针,临时指针将地址传给了主函数的指针p,指针p指向a的地址,第一次就可以打印出来,但是随即该地址被释放了,第二次就打印不出来。

再来看一个析构函数的例子

 

这里临时创建了一个p' ,test03中Person p=doWork2();相当于Person p=p'是一个隐式写法的拷贝构造

返回值优化

vs2022使用了返回值优化,则就不存在所谓的临时变量则

 1 int* test03()
 2 {
 3     int a;
 4     return &a;
 5 }
 6 int main()
 7 {
 8     int* b = test03();
 9     cout << *b << endl;
10     cout << *b << endl;
11 }

打印结果为

 

 

 1 Person test01()
 2 {
 3     Person p1;
 4     return p1;
 5 }
 6 void test02()
 7 {
 8     Person p = test01();
 9 }
10 
11 int main()
12 {
13     test02();
14 }

结果为

 

标签:临时,return,int,Person,返回值,优化,指针
From: https://www.cnblogs.com/Sandals-little/p/16935600.html

相关文章

  • MySQL 大表如何优化查询效率?
    MySQL大表如何优化查询效率?文章目录​​MySQL大表如何优化查询效率?​​​​背景​​​​分析​​​​测试​​​​实施​​​​索引优化后​​​​delete大表优化为小批......
  • 【转】嵌入式C语言代码优化方案
    来源:嵌入式C语言代码优化方案(深度好文,建议花时间研读并收藏)(qq.com)1、选择合适的算法和数据结构选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量......
  • Cloudfront HTTPS 性能优化
    HTTP/2相比廉颇老矣的HTTP/1.x,HTTP/2在底层传输做了很大的改动和优化包括有:每个服务器只用一个连接,节省多次建立连接的时间,在TLS上效果尤为明显加速TLS交付,HTTP/2......
  • 华为分布式数据库gaussdb,代理长连接会把查询语句分别到主节点上的优化思考
    智能刊登Gaussdb优化点 :1.确定是查询的语句,可以通过hint语句指定在读节点上查询,避免因代理长连接到主节点查询;用法:/*forceSLAVE*/SELECTCOUNT(1)assuccessFROM......
  • 【异步与线程池】串讲&优化详情页加载
    ......
  • 聊聊前端图片的格式和优化
    前言在当前的web开发过程中,图片的使用是一种重要的功能本期就来聊聊,开发中的图片以及我们如何优化图片图片的类型以及对比位图位图的特点是可以表现色彩的变化......
  • React中性能优化的方案
    shouldComponentUpdate控制组件自身或子组件是否需要更新,尤其在子组件非常多的情况下,需要进行优化。PureComponentPureComponent会帮你比较新Props跟旧的Props,......
  • Elasticsearch索引数据大批量删除接口优化
    Elaticsearch索引数据大批量删除接口优化​​一、需求​​​​二、索引数据删除接口​​​​2.1使用到的elasticsearch核心接口​​​​2.2封装删除脚本​​​​2.3封装接口......
  • 针对图谱超级节点的一种优化解决方案
    分享一个最近研究的课题:现实中网络结构的度分布往往呈现幂律性,意即存在这么一类节点,其拥有的边数对整个网络的边数占比显著非0,我们称这类节点为超级节点。中证中小投资者......
  • wpf binding例子 优化
    1、binding源为非控件,而是C#类/实例窗体(V)代码,<Windowx:Class="WpfBindingApp1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x......