C++学习笔记
文章平均质量分 85
本专栏主要记录C++学习笔记相关内容。
川峰
8年+Android相关工作经验。专注于移动开发领域。
展开
-
《现代C++语言核心特性解析》笔记(三)
二十四、三向比较(C++20)1. “太空飞船”(spaceship)运算符C++20标准新引入了一个名为“太空飞船”(spaceship)的运算符 <=>,它是一个三向比较运算符。<=> 之所以被称为“太空飞船”运算符是因为 <=> 让著名的Perl语言专家兰德尔·L.施瓦茨想起1971年的一款电子游戏《星际迷航》中的太空飞船。读者应该也看出来了,<=> 并不是 C++20首创的,实际上Perl、PHP、Ruby等语言早已支持了三向比较运算符,C++是后原创 2024-01-05 19:04:28 · 1342 阅读 · 0 评论 -
《现代C++语言核心特性解析》笔记(二)
《现代C++语言核心特性解析》读书笔记。原创 2023-11-07 07:05:59 · 305 阅读 · 0 评论 -
C++11新特性概要总结
将亡值是指C++11新增的和右值引用相关的表达式,通常指将要被移动的对象、T&&函数的返回值、std::move函数的返回值、转换为T&&类型转换函数的返回值,将亡值可以理解为即将要销毁的值,通过“盗取”其它变量内存空间方式获取的值,在确保其它变量不再被使用或者即将被销毁时,可以避免内存空间的释放和分配,延长变量值的生命周期,常用来完成移动构造或者移动赋值的特殊任务。的使用范围,使其可用于所有的内置类型和用户自定义的类型,使用初始化列表时,可添加等号(=),也可不添加。原创 2023-11-06 23:10:38 · 24 阅读 · 0 评论 -
C++11新特性之线程相关所有知识点
条件变量是c++11引入的一种同步机制,它可以阻塞一个线程或者个线程,直到有线程通知或者超时才会唤醒正在阻塞的线程,条件变量需要和锁配合使用,这里的锁就是上面介绍的。函数,假如线程函数执行时间较长,此时线程对象的生命周期结束调用析构函数清理资源,这时可能会发生错误。函数将会阻塞主线程,直到线程函数执行结束,线程函数的返回值将会被忽略。,理论上这个T可以是任意类型,但是我平时只存放整形,别的还真的没用过,整形有这种原子变量已经足够方便,就不需要使用。是一种线程同步的手段,用于保护多线程同时访问的共享数据。原创 2023-11-06 23:08:07 · 22 阅读 · 0 评论 -
C++11新特性之模板的改进
C++11之前是不允许两个右尖括号出现的,会被认为是右移操作符,所以需要中间加个空格进行分割,避免发生编译错误。C++11之前只有类模板支持默认模板参数,函数模板是不支持默认模板参数的,C++11后都支持。定义函数指针之类的操作,那烂代码我就不列出来了,反正我是看不懂也不想看…容易看的懂一些吧,但是我还是看不懂,因为我从来不用这种来表示函数指针,用。这个我之前都不知道,我开始学编程的时候就已经是C++11的时代啦。明显简洁并且易读,大家可能之前也见过使用。,可以轻松的定义别名,而不是使用繁琐的。原创 2023-11-06 22:37:55 · 24 阅读 · 0 评论 -
C++11新特性之 std::function 和 lambda 表达式
c++11新增了std::function、std::bind、lambda表达式等封装使函数调用更加方便。原创 2023-11-06 22:33:12 · 357 阅读 · 0 评论 -
C++11新特性之列表初始化
C++11新增了列表初始化的概念。在C++11中可以直接在变量名后面加上初始化列表来进行对象的初始化。列表初始化也可以用在函数的返回值上{}上述代码类A不是聚合类型,无法进行列表初始化,必须以自定义的构造函数来构造对象。上面列举了一些不是聚合类的例子,对于一个聚合类型,使用列表初始化相当于对其中的每个元素分别赋值;对于非聚合类型,需要先自定义一个对应的构造函数,此时列表初始化将调用相应的构造函数。原创 2023-11-06 22:22:07 · 32 阅读 · 0 评论 -
C++11的左值、右值、移动、完美转发
之前的拷贝是对于别人的资源,自己重新分配一块内存存储复制过来的资源,而对于移动语义,类似于转让或者资源窃取的意思,对于那块资源,转为自己所拥有,别人不再拥有也不会再使用,通过C++11新增的移动语义可以省去很多拷贝负担,怎么利用移动语义呢,是通过。根据名字大概就可以猜到意思,左值引用就是对左值进行引用的类型,右值引用就是对右值进行引用的类型,他们都是引用,都是对象的一个别名,并不拥有所绑定对象的堆存,所以都必须立即初始化。引用形式,但这样就只能通过引用来读取输出,不能修改数组,因为是常量引用。原创 2023-11-06 22:06:31 · 44 阅读 · 0 评论 -
C++11的类型推导详解
关于C++11新特性,最先提到的肯定是类型推导,C++11引入了auto和decltype关键字,使用他们可以在编译期就推导出变量或者表达式的类型,方便开发者编码也简化了代码。auto可以让编译器在编译器就推导出变量的类型,话不多说上代码:这就是auto的基本用法,可以通过=右边的类型推导出变量的类型。auto推导规则直接看代码代码1:代码2:总结一下auto的限制:再看这段代码:首先介绍下cv是指 和什么时候使用auto这里没有绝对答案,只能说一下我自己的理解,个人认为在不影响代码代码可读性的前提原创 2023-11-06 07:45:16 · 31 阅读 · 0 评论 -
C++11新特性之智能指针
很多人谈到c++,说它特别难,可能有一部分就是因为c++的内存管理吧,不像java那样有虚拟机动态的管理内存,在程序运行过程中可能就会出现内存泄漏,然而这种问题其实都可以通过c++11引入的智能指针来解决,相反我还认为这种内存管理还是c++语言的优势,因为尽在掌握。原创 2023-11-06 07:32:35 · 32 阅读 · 0 评论 -
【C++】C 语言里面的 extern “C“ ,并没有那么简单!
这与C++有什么关系呢? 看看(注意前面是两个下划线) 的名字你就应该知道它与C++有很大关系。是一个C++规范规定的预定义宏。你可以信任的是:所有的现代C++编译器都预先定义了它;而所有C语言编译器则不会。另外,按照规范的值应该等于 ,然而不是所有的编译器都照原创 2023-11-06 06:07:24 · 27 阅读 · 0 评论 -
【C++】线程安全加锁操作 Mutex::AutoLock 介绍
Android 中 Zygote 进程启动以后,负责 fork 应用进程,在 fork 出应用进程以后,会为应用进程启动 Binder 机制,具体在中:在 中,主要调用了 ,这个函数主要返回了一个 单例,并且这里使用了 互斥锁。是互斥类,用于多线程访问同一个资源的时候,保证一次只有一个线程能访问该资源。在《Windows核心编程》一书中,对于这种互斥访问有一个很形象的比喻:想象你在飞机上如厕,这时卫生间的信息牌上显示“有人”,你必须等里面的人出来后才可进去。这就是互斥的含义。下面来看的实现方式,它原创 2023-11-06 03:18:22 · 108 阅读 · 0 评论 -
【重学C++基础知识笔记】详细版
重学C++基础知识笔记之详细版。原创 2023-11-05 10:20:30 · 221 阅读 · 0 评论 -
【C++基础知识学习笔记】精华版(复习专用)
C++基础知识全面总结学习笔记。原创 2023-11-04 03:31:33 · 235 阅读 · 0 评论 -
《现代C++语言核心特性解析》笔记(一)
《现代C++语言核心特性解析》读书笔记。原创 2023-11-02 23:00:34 · 649 阅读 · 0 评论