现代C++ 阅读笔记;https://github.com/changkun/modern-cpp-tutorial
前言:
本文主要是《现代C++教程》一书的阅读笔记。
之前本科的时候,是通过学习C语言入的门,之后也是一直带着C语言的习惯来进行编程;大一在软院的时候,接触的是Java,开始使用面向对象语言进行编程。大二后转到了计算机学院,虽然计算机学院的学生都是通过C++语言来入门,但是因为很多课程作业和项目没有特指语言,所以通过Java和C语言也是能应付大部分课程工作。之后又通过兴趣学习了php, objective-c, js, html, css 等语言,做了也算是完成了本科阶段对编程的入门工作。
但是本科阶段,确实没有系统学习过C++。甚至C++ Primer 这本书也没系统看过,有些需要C++的项目,也都是学一些概念就上手了,可能是因为写的项目比较小的原因,也都完成了特定的任务。
研究生阶段,开始参加实验室的关于文件系统的项目,技术选型采用了C++,到现在硕士快毕业时,项目整体C++代码有三万左右的规模,也算是对C++的初步训练。
在项目初期编程时,我都是学习实验室同学hj的编程方式,因为我对C++不是很了解,停留在很古老的阶段,很多hj同学的语法和使用我都不是很懂,包括动态指针和boost等概念。通过逐渐了解我才发现,原来C++别有洞天,而我的认识只是换个文件扩展后缀的区别。深深觉得C++需要进行进一步重新认识。另外一方面,因为C++对C语言是兼容的,很多操作系统都能和C++配合使用;所以,C++用户可以直接和操作系统交互。虽然这样不如Java等语言透明,而且和特定平台耦合性较大,但是对做系统相关工作的人来说确实极其珍贵的特征。我们可以做一些与平台相关的lib实现,甚至扩展现有的语言和框架,诸如Go、Python和tensorflow等。
毕设进行的时候,我采用了GO与C++ 配合的方式,在原有项目基础上进行实现。整体GO代码量有6000左右,C++代码量有3000左右,在加上之前对项目贡献的C++代码,也算是初步入门了,具有了初步的开发能力。
最近我在公众号上看到 changkun-ou 写的这本书。通过书的摘要描述,感觉能解决我的需求。其将C++11 之前的C++称之为传统C++,之后的C++称之为现代C++,是一个很好的划分。本博客接下来的内容,主要是记录我在阅读中的一些关键点,方便我个人的记忆,如果对你也是有帮助,那也是很让人兴奋的。如果你对这本书也有兴趣,也祝你阅读愉快!
正文部分:
智能指针
Lambda表达式
auto 类型推导
右值引用,纯右值,将亡值,引用坍缩规则
线性容器,无序容器,元组,pair
thread 线程并发 mutex lock_guard unique_lock future
字面量 noexcept
阅读总结:
整个项目,思路还是比较简单,大概就是介绍一下C++的新特性,并进行举例说明,整体阅读起来像是在阅读博客;当然还是个很不错的项目,我相信随着时间的增加,这本书会慢慢变得充实起来。阅读此书,需要一些C++基础,同学们可以选择性阅读;有些新奇的模板用法,我觉得可以进行简单了解,到真实用到时再进一步学习,我相信大多数时间,用不到这么复杂的。
参考文献:
https://changkun.de/modern-cpp/
https://github.com/changkun/modern-cpp-tutorial
# C++ 相关基础推荐:2021年1月7日 19点44分