缘起
- 之前吧,虽然看了和买了一些CPP的书,可能学习方法不对,又或者自已能力真的有限,各种知识点没有串起来,总是在面试时突击一下,2019年开始all in到CPP项目上后呢,有发心要把知识串起来。
- 立足于现有电脑里的视频资料,忽然看到之前下载的“黑马程序员”系列,听C++基础(OO)部分时,感觉自已学的都串起来,于是坚持听完。差不多听了80%的时候,32W,自已2T的硬盘毫无征兆的挂了(外接的3.5读盘器也不行)。
- 33W(0812-0818)计划开始看“C++进阶STL”,并复习之前的OO内容的,怕东西丢失了,自已学完一部分知识后写份学习笔记吧。
-
下载的内容day05(不确定全不全,感觉不全)
- day01:函数模板,类模板的语法
- day02:MyArray的实现、类型转换、异常(比OO里面讲得详细一些)
- day03:输入输出流、STL基础、string和vector
- day04:deque、list
- day05:multimap、函数对象、算法
内容
day01
-
01-02,07:函数模板
- 自动类型推导,显式指定类型
MySwap<int>(a,b)
。 - 重载时相同匹配,优先普通函数;指定函数模版的语法
MySwap<>(a,b)
- 07写的例子,char和int排序 不要忘记
template
- 自动类型推导,显式指定类型
-
03-04:CPP编译过程
- -ESc参数,分别对应的4个过程,例:
g++ index.s -o index
- -ESc参数,分别对应的4个过程,例:
-
05:模板函数实现原理剖析
- 两次编译过程
- 一次是函数模板的语法检查;一次根据具体的调用,再编译生成相应的模板函数
- -S 生成 index.s文件,看汇编格式
-
06,08:类模板,以及派生类
- 类模板必须显式指定类型 Person<int>
- 09:普通类的.h和.cpp分离编写
- 10:类模板类内实现
-
12:类模板类外实现_模板类中使用友元(2个)
- 模板类中不要滥用友元
- 12(2)我听了也有点蒙,我是g++编译器,没成功
-
13-14: 类模板h和cpp分离编写
-
模板机制和C++编译机制相关
- 模块的2次编译,C++的独立编译,导致
#include.h会报错
,要#include.cpp或.hpp
才行。
- 模块的2次编译,C++的独立编译,导致
-
-
15:类模板碰到static成员
- static属于具体类的,而不是类模版的。
day02
-
02-03:MyArray的实现
- 冷不丁的还提了一下C++11的右值引用
- 自已要思考并纸上实现一下,看看知识的差距在哪。
-
04-06:类型转换
- 用得比较多也就是
static_cast<>()
了,用于内置数据类型,具有继承关系的指针或引用【不管是父类到子类,还是子类到父类】 -
dynamic_cast<>()
,只能由子类型转成基类型,因为类型检查,子类占的空间多,基类相对少一些。
- 用得比较多也就是
day03
day04
day05
-
02、03、06 map相关
-
基本类型的map操作学到了,4种插入方法
myMap.insert(pair<int,int>(10,10))
myMap.insert(make_pair(20,20));
myMap.insert(map<int,int>::value_type(30,30));
-
myMap[40]=40;
不存在key,会创建pair,存在则更新;访问不存在的key,也会插入到map中,并给个默认值,所以这种有副作用。
- 自定义类型的map,我例子没运行成功,知识上只是有大概了解吧
-
收获&感想
履历
20190817
- day01的整理,day02(2-6),day05(2、3、6)整理。因为0917看到代码中要用到map()操作,顺便看了一下
- 用时1h的样子吧,就当是复习学过的内容了。
收获
- 搜的时候,也看到了自已学习day01、day02的一些笔记(都不够系统),站在自已来自,那些当时要笔记的部分东西,已经内化到我的知识体系了(比如4种类型转换,函数模板,类模板语法【模板但我没找到项目中应用的地方】)
-
也看到了一些书上没有提及到的坑,比如:
- 分离写法中
#include<hpp>
的写法; - 在类模板中使用
friend
关键字; - 同样的修改,g++不认识,而vs认识。老师用vs讲的,我写例子用的是codeblock,clion都是基于g++
- 分离写法中
-
纠正了自已觉得STL是用库的想法,之前的学习方法都是对着书本运行一下代码,但项目中真正解决问题时,比如用
map
在怎么去写好,还是要搜索引擎,多用,横向的多关联思考,纵向的往里面思考才行。
感想
- 是不是视频不太全啊,毕竟是网盘上下载的,day05的课程,前2.5天都在讲的是C++OO里的高级一点的知识,后面2.5讲的是用法(虽然还没有听),模板的语法讲得也浅了些,模板特化都没有讲。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。