欢迎大家来访二笙的小房子,一同学习分享生活!
文章目录
1. 个人见解:C++
先来说说对C++的感觉吧,由于个人不是特别热爱学习的那种,自律性也比较差,加之上学期才刚接触C++,于是在经过一个学期的cpp学习,对C++才属于那种略有了解的程度,但即便如此也能感受到C++的强大,就这样,在暑假的时候就决定走cpp方向,买了这本经典书籍开始了学习之旅。
2. primer学习总结
经过大概三个月的学习差不多将这本书看完,每一章节都有认真的看。对于我来说,在读完一本经典书籍如果没有自己的一点收获都不好意思说自己阅读过此书;庆幸,阅读此书之后,终是有了自己的一点收获,相比于在阅读之前只能说对于C++的理解上了一层台阶,如果说现在对于C++是初步了解,那么之前可能只能称之为入门。下面就primer此书的几个部分谈一谈个人见解:
2.1 第一章:开始
对于此章,大多在学习本书之前都基本了解,相当于给有点C++基础的同学的回顾,当然也学到了一点新知识(以前课堂教学未了解到的),就 读取数量不定的输入数据,了解到了输入放在循环中如何有效的读取多个数据(现在看来非常的基础),对于while (cin >> value)
,当输入的值输入错误、遇到文件结束符或无效输入时结束,get到这一新知识点,第一章也就差不多了。
2.2 Part1:C++基础
对于这一部分,大多也是比较基础的东西,除了这些之外还是有些比较细节的东西,在面试时也经常被问到,所以某些知识点还是需要仔细分析的
- 在这一部分初次出现的C++11新标准中新添加的右值引用
- 指针概念的复习与回顾
- const限定符的使用(其中顶层const与底层const的区别)
- constexpr以及常量表达式
- 还有以前未曾接触到的auto与decltype类型指示符
- 以前稍有些了解但不深入的vector(后续章节有深入提及)
- 一些常用的运算符(++i与i++的区别)
- try语句块与异常处理(后续章节有深入提及)
- 处理命令行选项的main:形如
int main(int argc, char **argv)
- 委托构造函数、聚合类与字面值常量类等,这些知识点在我看来以前不是很熟悉在阅读完一遍之后了解了,再重新回顾的时候需要重点查看的一些知识点(之后几个部分的总结也类似)
2.3 Part2:C++标准库
这一部分与下一部分在我看来是整本书的核心部分,特别特别的重要!!!对于其中的很多知识点都需要理解与掌握,其中泛型算法部分对于数据结构与刷题会有很大的帮助(亲测)
- IO类中的三个主要头文件:iostream、fstream以及sstream,对于文件与字符串的处理尤有帮助
- 顺序容器:vector、deque、list、forward_list、array以及string和关于这些顺序容器的基本操作(其中“vector对象是如何增长的”这一节有助于理解vector的实现)
- string的查找操作和与数值之间的转换操作对于数据结构中处理字符串有着奇效
- 泛型算法、
lambda表达式
以及bind函数也许能让你解题快人一步 - 关联容器map与set以
RB-tree
为底层机制,之后衍生出来的hash_set与hash_map以hashtable
为底层机制,这些也是面试常问的 - 动态内存的管理以及智能指针的应用,shared_ptr、unique_ptr与weak_ptr在类中的应用
- 动态数组与allocator类
2.4 Part3:类设计者的工具
类是C++的核心工具,这一部分将从类的各个部分讲解,看完并理解此部分能够对类有更深的理解!同时此部分还包含了模板编程这一C++重要特性!应该重点掌握
- 拷贝构造函数、移动构造函数(右值引用)以及动态内存管理类
- 类中函数运算符,重载运算及类型转换(注意避免重载的二义性)
- 面向对象程序设计(数据抽象,继承和动态绑定)
- 其中虚函数是一个重中之重的点,一定要掌握
- 几乎贯穿全书的
文本查询程序
,了解与理解其实现是很有必要的 - 模板是泛型编程的基础,从这句话就能知道这章有多重要了!!!
- 模板这章比较重要的知识点:类模板与函数模板,move的理解与转发
2.5 Part4:高级主题
这一部分对于目前来说可能不会有太大的用处,但以后毕竟走cpp方向(对于想要走着方向的肯定早晚都得看的)所以先粗略学习了一遍。第十九章虽然可能不太常用,但面试时问到这方面的频率很高!!
- tuple类型,当用于返回多个值(不同类型)时,适合使用tuple
- bitset类型,用于处理二进制位
- 正则表达式,一种描述字符序列的方法,是一种极其强大的计算工具(目前感觉正则表达式主要应用于各种爬虫,字符串匹配)
- 随机数,利用随机数引擎对象和分布对象组合的随机数发生器生成随机数(个人感觉比较好用)
- 利用一些操纵符改变流的状态输出特定格式的数据
- 异常处理的每个过程,try、throw和catch的步骤,noexcept异常说明符以及异常类的层次
- namespace命名空间,这个在很多大型工程项目中很常见
- 多重继承以及虚继承,作为重点需要仔细理解
- new和delete的工作原理,重载的new和delete以及malloc、free的应用,定位new表达式,这些我觉得都超级超级重要!!
- dynamic_cast与typeid运算符,实现运行时类型识别
- 枚举类型,enum
- 类中数据成员指针以及函数指针,理解与普通指针的区别
- union(联合类),匿名union应用比较广泛
- 位域(传递二进制数据)以及volatile限定符(对类型额外修饰)
- 链接指示:extern “C”(使用链接可以将C++代码与其他语言代码放在一起使用)
3. future
写博客不是目的,学会书中知识点、自己有收获才是最重要的!!!学习漫长无涯,就此倍加努力!!!
正在学习的你,一起加油吧!