Skip to content

Commit 9b85ea4

Browse files
authored
Create Main.md
1 parent 91e40b3 commit 9b85ea4

File tree

1 file changed

+338
-0
lines changed

1 file changed

+338
-0
lines changed

Main.md

Lines changed: 338 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,338 @@
1+
应该不算最终版吧。
2+
3+
这样的提纲目的只是为了方便区别知识点的重要程度,有选择性地学习C++庞大而繁杂的知识体系,减少不必要的精力消耗。
4+
5+
所列提纲仅个人愚见,或有不妥,会及时更正。
6+
7+
++黄标为书中内容,需要重点掌握并记忆。++
8+
9+
随时会更新,你要不存到有道云里面。会自动刷新成最新修改的版本的。
10+
11+
有什么问题。。及时问。。
12+
---
13+
14+
## 第1章 开始
15+
- 从编写简单的C++程序开始,了解编译和运行程序的流程。
16+
- 初步认识程序的输入输出过程,了解程序中定义变量的行为和规则。
17+
- 初步认识控制流语句,对于控制流语句的基本模板有一个大体的认知。
18+
- 了解类和成员函数。
19+
# 第Ⅰ部分 C++基础
20+
## 第2章 变量和基本类型
21+
1. 数据的内存表示:
22+
- 掌握数据在内存中的表示方法
23+
- 了解内存地址和数据存储的关系
24+
2. 基本的内置数据类型:
25+
- 了解C++中所有内置数据类型
26+
- 掌握常用数据类型(bool,char,int,float,double)
27+
- 掌握数据类型的无符号和有符号形式(unsigned和signed)
28+
- 掌握不同数据类型间的强制转换(精度损失)
29+
- 掌握变量的字面值含义
30+
3. 变量和标识符:
31+
- 掌握变量的声明,定义,赋值,初始化
32+
- 掌握变量的作用域
33+
- 掌握基本的C++标识符的规则
34+
4. 复合数据类型:指针和引用
35+
掌握C++的复合类型,着重掌握指针和引用,要将两者的区别联系烂熟于心,不混淆。
36+
- 引用
37+
区别于普通类型的变量,引用有以下几个特点:
38+
39+
- 引用只是别名,定义引用时,程序把引用和它的初始值绑定在一起
40+
- 引用本身不是对象,编译器不会为引用分配内存空间,它只是一个别名
41+
42+
牢记以上两点就很容易理解引用了:
43+
- 引用必须初始化(定义时要执行绑定的过程)
44+
- 对引用进行操作,实际是在操作引用绑定的对象(引用只是别名)
45+
46+
- 指针
47+
和引用一样,指针也能实现对其他对象的间接访问。
48+
49+
- 指针和引用的最大区别就是,指针本身是一个对象
50+
- 指针和普通变量的最大区别是,指针存放的是其他对象的地址
51+
5. const限定符。
52+
- 了解const限定符的基本功能和const的作用域
53+
- 掌握const限定符和指针引用的组合使用
54+
- 区别顶层const和底层const
55+
- 熟悉常量表达式和constexpr
56+
6. 处理数据类型
57+
- 熟练掌握类型别名typedef的基本功能和用法
58+
- 了解推断类型decltype
59+
- 掌握auto类型变量的使用
60+
7. 自定义数据类型
61+
- 着重掌握数据结构体和数据成员
62+
- 着重掌握头文件的编写方式和调用方式(头文件保护符)
63+
## 第3章 字符串、向量和数组
64+
1. 掌握命名空间和using声明
65+
2. 熟练掌握string标准库类型
66+
- string是可变长的字符序列
67+
- 定义和初始化
68+
- 直接初始化和拷贝初始化(用赋值符号进行的初始化)
69+
- 直接初始化的两种形式:
70+
71+
```
72+
string valuename("value");
73+
string valuename(n,‘c’);
74+
```
75+
- 操作
76+
- 输入(is<<s)和输出(os>>s)
77+
- 获取行getline()
78+
- 拼接、赋值、相等、不等
79+
- 字典顺序遍历<.<=,>=,>
80+
- !两个规则!
81+
- 函数s.empty()和s.size()
82+
- 运用cctype头文件进行处理string对象中的字符
83+
- 基于范围的for
84+
```
85+
for (declaration: expression)
86+
statement
87+
```
88+
- 下标运算符
89+
- 掌握下标运算符接受的参数类型和返回值
90+
- 严格注意下标越界问题
91+
3. 熟练掌握vector标准库
92+
- vector是可变长的对象序列
93+
- 使用vector有何优点?
94+
- 定义和初始化方式
95+
96+
```
97+
vector<T> v1;
98+
vector<T> v2(v1);
99+
vector<T> v2 = v1;
100+
vector<T> v3(n,val);
101+
vector<T> v4(n);
102+
vector<T> v5{a,b,c...};
103+
vector<T> v5 = {a,b,c...};
104+
```
105+
- 要注意到vector的对象类型的匹配问题
106+
- 操作
107+
- 添加元素v.push_back(t)
108+
- 函数v.empty()和v.size()
109+
- 相等、不等、字典顺序遍历<.<=,>=,>
110+
- 两个规则!
111+
- 无法向空vector对象通过使用下标操作的方式添加元素
112+
4. 迭代器
113+
- 掌握迭代器的使用
114+
115+
```
116+
atuo itBegin = v.begin(), itEnd = v.end();
117+
```
118+
- begin成员返回第一个元素的迭代器
119+
- end成员返回指向“尾元素的下一个位置”的迭代器,又称为**尾后迭代器**
120+
- 当容器为空时,begin和end返回同一个迭代器,都是尾后迭代器
121+
- 掌握迭代器的操作
122+
5. 数组
123+
- 掌握数组各种定义和初始化的方式
124+
- 数组的大小是确定不变的,需要在定义时明确指定
125+
- 数组维度必须是常量表达式
126+
- 数组本身是不允许进行赋值和拷贝操作的
127+
- 掌握复合类型数组的声明
128+
- 掌握如何访问并操作数组元素
129+
- 范围for
130+
- 下标
131+
- 迭代器、指针
132+
- 理解掌握指针操作和下标操作,了解两者的异同和等价关系
133+
- 理解掌握解引用和指针运算的交互
134+
- 学会处理C风格字符串 并 与string类型对比优劣
135+
- 学会C风格字符串与string类型、vector容器的转化
136+
6. 多维数组
137+
- 理解“多维数组”:数组的数组
138+
- 掌握多维数组的初始化方式,不同初始化方式对于数组元素初始值的影响。
139+
- 多维数组的下标引用和操作。==P115==
140+
- 用指针操作多维数组
141+
- 必须熟悉、明辨多维数组名会被转化为指向数组首元素的指针
142+
- 必须熟悉、明辨指针究竟指向了多维数组的何处
143+
144+
145+
146+
## 第4章 表达式
147+
1. 什么是表达式(expression)?
148+
- 了解什么是表达式
149+
- 了解什么是运算符
150+
- 掌握表达式中组合运算符和其运算对象
151+
- 熟悉表达式中的运算符对运算对象的转换(类型转换)
152+
- 熟悉重载运算符操作
153+
- 熟练掌握表达式的左值和右值并区分
154+
- c++中,当一个对象被用作右值的时候,用的是对象的值(内容);当对象用作左值的时候,用的是对象的身份(在内存中的位置)
155+
- 熟练掌握复合表达式中的优先级和结合规律
156+
- 必须熟记常见运算符的优先级顺序。==P147==
157+
- 了解表达式的求值顺序。知晓未定义求值顺序可能产生的后果
158+
2. 算术运算符
159+
- 算术运算符包含:(依照优先级顺序)(括号内为运算符的用法示例)
160+
- 一元正号( + expr )、一元负号( - expr ))
161+
- 乘法( expr1 * expr2)、除法( expr1 / expr2 )、求余( expr1 % expr2)
162+
- 加法( expr1 + expr2 )、减法( expr1 - expr2 )
163+
- 算术运算符都满足左结合律
164+
- 算术运算符的运算对象和求值结果都是右值
165+
- 了解溢出和其他算术运算符异常问题
166+
3. 逻辑和关系运算符
167+
- 逻辑和关系运算符包含:(依照优先级顺序)(括号内为运算符的用法示例)
168+
- 逻辑非 ( !epxr )
169+
- 小于( expr1 < expr2 )、 小于等于( expr1 <= expr2 )、大于( expr1 > expr2 )、大于等于( expr1 >= expr2 )
170+
- 相等( expr1 == expr2 )、不相等( expr1 != expr2 )
171+
- 逻辑与( expr1 && expr2 )
172+
- 逻辑或( expr1 || expr2 )
173+
- 逻辑和关系运算符中,只有逻辑非是右结合。
174+
- 熟悉逻辑与(&&)和逻辑或(||)运算符的短路求值策略
175+
4. 赋值运算符
176+
- 赋值运算符的左侧必须是一个可修改的左值
177+
- C++11 新标准的列表初始化用作赋值的右侧运算对象
178+
- 掌握的赋值运算符是右结合、优先级的等级
179+
- 切勿混淆相等运算符和赋值运算符
180+
- 复合赋值运算符==P131==
181+
5. 递增和递减运算符
182+
- 掌握递增运算符(++)和递减运算符(--)的两种形式:前置版本和后置版本
183+
- 理解这条建议:
184+
- 建议:除非必须,否则不用递增运算符的后置版本
185+
6. 成员访问运算符
186+
- 掌握点运算符和箭头运算符
187+
- 各自左右值的区分
188+
7. 条件运算符
189+
- 掌握并运用唯一的三元运算符——条件运算符( cond ? expr1 : expr2 )
190+
8. 位运算符
191+
- 掌握移位运算符的原理和操作使用(区别于IO中的重载版本)
192+
- 掌握位求反的原理
193+
- 掌握位与、位或、位异或运算符的原理
194+
9. sizeof运算符
195+
- 返回一个表达式或类型名字所占的字节数,结果是size_t类型
196+
197+
- 对类型使用
198+
```
199+
sizeof (type)
200+
```
201+
- 对表达式使用
202+
```
203+
sizeof expr
204+
Sales_data data, *p;
205+
206+
sizeof (Sales_data);
207+
208+
sizeof data;
209+
210+
sizeof p;
211+
212+
sizeof *p;
213+
```
214+
- sizeof不实际计算运算对象的值
215+
- sizeof运算符的结果 ==P139==
216+
10. 逗号运算符
217+
- 逗号运算符的优先级最低,又常与;混淆。
218+
- 需熟练掌握逗号运算符的运算方式。
219+
- 区分,和;将对程序产生的影响
220+
11. 类型转换
221+
- 熟悉隐式转换(哪些情况会引发隐式转换)==P141==
222+
- 算数转换中的整型提升、无符号有符号等情况下的转换结果
223+
- 掌握显式转换的方式
224+
## 第5章 语句
225+
1. 简单语句
226+
- 表达式语句的构成:表达式末尾加上分号便构成了表达式语句
227+
- 了解空语句的常见用途
228+
- 掌握复合语句(块)
229+
- 复合语句的定义(花括号)
230+
- 复合语句在编程中使用的普遍性(举例)
231+
- 块不以分号作为结束。块本身由花括号决定始末。
232+
2. 语句作用域
233+
- 熟悉在语句的不同位置出现的变量的作用域。(句内、句外,产生的影响)
234+
3. 条件语句
235+
- if语句
236+
- 基本模式
237+
238+
```
239+
//if语句
240+
if (condition)
241+
statement;
242+
243+
//if-else语句
244+
if (condition)
245+
statement1;
246+
else
247+
statement2;
248+
249+
//嵌套if-else语句
250+
if (conditon1)
251+
statement1;
252+
else if(conditon2)
253+
statement2;
254+
……
255+
```
256+
- 在使用if语句时,要注意statement处的语句块,需要合理使用花括号控制执行
257+
- 悬垂else问题
258+
- C++规定:else与离他最近的尚未匹配的if匹配。
259+
- 与缩进对齐的位置无关
260+
- switch语句
261+
- 熟练掌握switch的使用
262+
- case标签必须是整形常量表达式
263+
- 必须明确掌握switch内部的控制流,知晓switch内部的程序的执行顺序和方式
264+
- 掌握通过使用break语句控制执行
265+
- 掌握default标签
266+
- 了解在switch内部变量的定义情况
267+
4. 迭代语句
268+
- while语句
269+
- 基本模式
270+
271+
```
272+
while (condition)
273+
statement
274+
```
275+
- 要注意到定义在while条件部分和while循环体内的变量每次迭代都会经历从创建到销毁的过程
276+
- 传统for语句
277+
- 基本模式
278+
279+
```
280+
for (initializer; condition; expression)
281+
statement
282+
```
283+
- 理解掌握for循环中的执行流程。可以用简单的流程图表示出来
284+
- 掌握在for语句头中可以进行多重定义
285+
- 掌握for语句头中的省略用法
286+
- 熟悉for语句中各部分的变量作用域
287+
- 范围for语句
288+
- 基本模式
289+
```
290+
for (declaration: expression)
291+
statement
292+
```
293+
- 掌握范围for的执行原理
294+
- do while语句
295+
- do while语句是唯一一个必须先无条件执行一次循环体的迭代语句。
296+
- 基本模式
297+
```
298+
do
299+
statement
300+
while (condition)
301+
```
302+
- 掌握do while语句的执行流程
303+
- 学会利用do while语句无条件先执行一次循环体的特性进行合理的运行
304+
5. 跳转语句
305+
- break语句
306+
- 理解掌握这句话
307+
break语句负责终止离他最近的while、do while、for或switch语句,并从**这些语句之后的第一条语句**开始继续执行
308+
- continue语句
309+
- 理解掌握这句话
310+
continue语句功能是终止**最近的循环体中的当前迭代**并立即开始**下一次迭代**
311+
- continue语句只能出现在for、while、do while循环的内部,或者嵌套在此类循环里的语句或语句块中
312+
- goto语句
313+
- goto的功能是从goto语句无条件跳转到同一函数的另一条语句。(不建议使用。)
314+
- 了解goto的用法
315+
6. TRY语句块和异常处理
316+
- 暂不要求掌握此部分
317+
## 第6章 函数
318+
1. 函数基础
319+
2. 参数传递
320+
3. 返回类型和return语句
321+
4. 函数重载
322+
5. 特殊用途与语言特性
323+
6. 函数指针
324+
## 第7章 类
325+
1. 定义抽象数据类型
326+
2. 访问控制与封装
327+
3. 类的其他特性
328+
4. 类的作用域
329+
5. 构造函数
330+
6. 类的静态成员
331+
# 第Ⅱ 部分 C++标准库
332+
## 第8章 IO库
333+
## 第9章 顺序容器
334+
## 第10章 泛型算法
335+
## 第11章 关联容器
336+
## 第12章 动态内存
337+
# 第部分 类设计者的工具
338+
此部分为C++高阶部分。暂不列入。

0 commit comments

Comments
 (0)