C嘎嘎~~[谈谈C++的一些优化]

这篇具有很好参考价值的文章主要介绍了C嘎嘎~~[谈谈C++的一些优化]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

匿名对象

通过以前C语言的学习, 我们知道了有一种 具有临时性的, 没有名字的变量 — — 匿名变量.
那么我们的对象应该也有这个特性 — — 匿名对象

匿名对象, 即没有名字的对象, 生命周期就在当行

匿名对象的一般表现方式👇👇👇

// 有默认构造函数
A()

// 有参构造
A(10,20)

🗨️证明一下, 匿名对象的生命周期就在当行??


  • C嘎嘎~~[谈谈C++的一些优化]
    根据上面的结果显示, 匿名对象调用构造函数后, 下一行就会调用析构函数 — — 匿名对象的生命周期就是在当前行.

🗨️ 老陈, 匿名对象的生命周期这么短, 能有什么用处?

  • 可以不用对象调用成员函数
    C嘎嘎~~[谈谈C++的一些优化]

🗨️老陈, 我用下面的例子怎么不行?
C嘎嘎~~[谈谈C++的一些优化]

  • 所有的临时对象都具有常性, 故匿名对象也是具有常性的
    ⇒ 这里应该用常引用, const &
    C嘎嘎~~[谈谈C++的一些优化]
    🗨️ 不是匿名对象具有常性, 离开这一行就会销毁吗⇒ 那这个tem引用就不是野引用吗??
  • 针对这种情况, 我们的祖师爷就把这种用const引用修饰的匿名对象延长了生命周期, 把它的生命周期延长至当前函数局部域⇒ 所以上面的tem引用就不是野引用

在以后我们会学习一种字符串类 string
看看下面的三种操作, 你会使用哪一种操作👇👇👇

#include<iostream>
#include<string>

using namespace std;

void push_back(const string& tem)
{
	cout << "push_back(const string& tem)" << endl;
}

int main()
{
	
	string str1 = "666666";
	push_back(str1); // 通过对象调用

	push_back(string("666666"")); // 匿名对象
	push_back("666666"); // 隐式类型转换
}

第一种 — — 创建一个string对象, 传参使用此string对象
第二种 — — 传参用匿名对象
第三种 — — 运用隐式类型转换
其实, 第二种 和 第三种的本质是一样的:

  1. 形参肯定是 string对象, 不过构造出来的临时对象都具有常性
  2. 实参那边要用 常引用const &来接收 — — 这样是权限的平移; 如果是引用& 来接收, 那么就会是权限的放大

⇒ 所以, 我们以后尽量使用类似 第三种的方式, 这样不仅可以简单明了, 也可以省去很多步骤

引用

前面, 我们已经知道了 引用作参数 和 引用做返回值可以减少临时拷贝⇒ 从而达到节省空间, 提高效率的作用

引用作形参

首先, 先看一下对立面
C嘎嘎~~[谈谈C++的一些优化]
接下来, 看看引用作形参
C嘎嘎~~[谈谈C++的一些优化]
我们发现, 引用作形参减少了一次拷贝构造 和 析构

引用作返回值

先看一下传值返回(引用作形参)
C嘎嘎~~[谈谈C++的一些优化]
看一下传引用返回(引用作形参 ⇒ 这种情况就是 引用返回 && 引用作形参)
C嘎嘎~~[谈谈C++的一些优化]
传值作形参 && 传值返回
C嘎嘎~~[谈谈C++的一些优化]

编译器优化

编译器会对同一行中的相同功能的事情做一下优化

构造 + 拷贝构造 ⇒ 构造

为了测试 拷贝构造 ⇒ 这里我们就不让引用作形参
C嘎嘎~~[谈谈C++的一些优化]
当然, 还有一种 构造 + 拷贝构造 ⇒ 优化为构造 的情形 匿名对象返回
C嘎嘎~~[谈谈C++的一些优化]

拷贝构造 + 拷贝构造 ⇒ 一个拷贝构造

C嘎嘎~~[谈谈C++的一些优化]

  • 总结:
    匿名对象爽瓜瓜
    尽量使用引用作形参 和 引用作返回值
    如果不能用引用作返回值, 就尽量用编译器的优化⇒ 即尽量写在一行

用手挡住射进眼里的阳光,就像挡住对你的思念,挡不住.文章来源地址https://www.toymoban.com/news/detail-462980.html

到了这里,关于C嘎嘎~~[谈谈C++的一些优化]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [C++]默认成员函数等——喵喵要吃C嘎嘎3

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 类的实例化 类对象模型 如何计算类对象的大小 类对象的存储方式猜测 this指针 C语言和C++实现Stack的

    2024年02月05日
    浏览(33)
  • 【小梦C嘎嘎——启航篇】C++ 基础中的精华(一)

        😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主! 😘博主小留言:哈喽! 😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不

    2024年02月12日
    浏览(26)
  • C++类和对象终章——友元函数 | 友元类 | 内部类 | 匿名对象 | 关于拷贝对象时一些编译器优化

    🌸作者简介: 花想云 ,在读本科生一枚,致力于 C/C++、Linux 学习。 🌸 本文收录于 C++系列 ,本专栏主要内容为 C++ 初阶、C++ 进阶、STL 详解等,专为大学生打造全套 C++ 学习教程,持续更新! 🌸 相关专栏推荐: C语言初阶系列 、 C语言进阶系列 、 数据结构与算法 、 Linu

    2023年04月15日
    浏览(30)
  • [C++]C/C++内存管理——喵喵要吃C嘎嘎5

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 C/C++内存分布 C++内存管理方式 new/delete操作内置类型 new和delete操作自定义类型 operator new与operator del

    2024年04月13日
    浏览(24)
  • [C++]关键字,类与对象等——喵喵要吃C嘎嘎2

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 auto(C++11) 基于范围的for循环(C++11) 指针空值nullptr(C++11) 面向过程和面向对象认识 类的引入

    2024年02月06日
    浏览(27)
  • [C++]类和对象,explicit,static,友元,构造函数——喵喵要吃C嘎嘎4

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 佬佬催更,那就更吧!嗯~ o(* ̄▽ ̄*)o! 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个

    2024年03月15日
    浏览(32)
  • C++ | 谈谈构造函数的初始化列表

    我们知道,对于下面这个类A的成员变量 _a1 和 _a2 属于【声明】,还没有在内存中为其开辟出一块空间以供存放,真正开出空间则是在【定义】的时候,那何时定义呢?也就是使用这个类A去实例化出对象的时候 这个对象的空间被开出来了,难道里面的成员变量就一定开出空间

    2023年04月11日
    浏览(83)
  • 【AI绘画Stable Diffusion】高清图像放大+面部修复+一键抠图,谈谈你可能不知道的优化技巧!

    一提起后期处理,我猜你可能立马想到的就是图像放大。 今天,我要向你展示的后期处理手法,以及优化技巧。 如果你常用的是秋叶大佬的整合包,那么你对\\\"R-ESRGAN 4x+\\\"和\\\"R-ESRGAN 4x+ Anime6B\\\"应该不会陌生。 R-ESRGAN 4x+:写实图片 R-ESRGAN 4x+ Anime6B:二次元图片 然而,你是否曾在

    2024年02月16日
    浏览(45)
  • C++程序员的待遇怎么样?我来谈谈学好C++的五个关键点

    有个学弟跟我谈到这样一个问题:现在我看到网上很多人都在讲,说这个做C++程序员,尤其是本科毕业计算机专业,然后步入社会之后就能拿到月入过万。但是为什么自己找的这个工作啊,普遍在月薪六七千块钱左右,也就是刚毕业之后跟公司签订这个三方协议,然后进到这

    2024年02月08日
    浏览(83)
  • 面试题-Linux优化&一些服务优化

    1、不使用root用户,添加普通用户,然后通过sudo授权管理 2、我们可以修改默认的远程连接ssh服务的端口,以及禁止root用户远程连接 3、定时自动更新服务器时间,配置国内的yum源 4、修改磁盘阵列         对于写操作频繁而且对数据安全性要求不高时,可以把磁盘做成

    2024年02月07日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包