C++
1、由C到C++的变化:过程性编程-----》结构化编程-----》面向对象编程(OOP); 试图让实际问题满足语言的过程性方法----》试图让语言来满足实际问题的要求;自上而下的设计过程(将程序、大任务分解为各个小任务的过程)----》自下而上的设计过程(从低级组织【如类】到高级组织【如程序】的处理过程)
2、C++中OOP和C++泛型编程:二者的目标相同,即使重用代码和抽象通用概念的技术更简单。不过OOP强调的是编程的数据方面,而泛型编程强调的是独立于特定数据类型。它们的侧重点不同。OOP是一个管理大型项目的工具,而泛型编程提供了执行常见任务(如对数据排序或合并链表)的工具。
3、c++程序构建过程,各大系统下编译器行为简介 源代码---》目标代码-----》链接
4、命名空间
5、变量的声明与定义
在声明部分出现的变量有两种情况:一种是需要建立存储空间的(如int a;);另一种是不需要建立存储空间的(如extern int a;)。前者称为定义性声明(defining declaration),或简称为定义(definition)。后者称为引用性声明(referenceing declaration)。广义地说,声明包括定义,但并非所有的声明都是定义。对“int a;” 而言,它是定义性声明,既可说是声明,又可说是定义。而对“extern int a;” 而言,它是声明而不是定义。一般为了叙述方便,把建立存储空间的声明称为定义,而把不需要建立存储空间的声明称为声明。
用static来声明一个变量的作用有二:
对局部变量用static声明,使该变量在本函数调用结束后不释放,整个程序执行期间始终存在,使其存储期为程序的全过程。
全局变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。
定义时声明某个变量时同时复制给变量,就叫变量初始化。
6、类简介:要定义类,需要描述它能够表示什么信息和可对数据执行哪些操作。类之于对象就像类型之于变量。
7、函数原型:函数原型之于函数就像变量声明之于变量----指出涉及的类型。
函数原型、函数体、函数头、函数类型、函数定义 区分
8、常用整型:char、uchar、short、ushort、int、unsinged int、long、unsinged long 、long long 、unsigned long long
9、字面值常量:十进制、八进制、十六进制 表示 / 字面值常量加后缀表示字面值常量的类型 u/ul/ll
10、std::cout 控制输出格式 dec、oct、dex
11、字符编码与c++ 表示
12、C++ 源字符集(源代码字符集) / C++程序执行字符集(程序执行期间可以使用的字符集,如可以从文本读取或显示在屏幕的字符集)
13、通用字符名
14、C++ 用于字符的类型由:char、uchar、w_char、char16_t、char32_t (基本字符集和扩展字符集)
15、const 限定符 常量,常量声明时需初始化
16、C++浮点数的表示 (float double long double 能够表示的数字有效位数的不同)
17、操作符重载:使用相同的符号进行多种不同的操作
18、取模运算只是用于整型,浮点数取模可以使用fmod(double)函数
19、C++中的自动类型转换
自动类型转换的基本规则:
20、数组名与指向数组的指针,二者都可以使用数组名加索引下标的方式访问数组元素;不同的是数组名是一个指针常量,不能更改指向的地址,其值不能更改,而后者可以自增、自减及赋值
21、指针的使用可能带来的问题
22、C++中的内存分配方式不同,管理数据内存的方式也不同,大致有3种:自动存储(代码段中的栈空间数据对象)、静态存储(全局数据对象、static声明数据对象)、动态存储(malloc/free、new/delete 堆空间分配的数据对象)
23、数组、vector、array
数组、vector、array 都可以使用数组下标 [] 来访问其中的元素,但 [] 对越界的索引值不会做出提示;而vector和array同时也可以使用成员函数at()来访问元素,若越界则程序将抛出异常;[] 比 at() 执行效率高
24、复合数据类型
25、for循环(由控制体和循环体两部分构成;控制体由初始化、测试、 更新操作 构成)
26、自增、自减 (a++ 在表达式中时表示使用a当前的值进行计算;++a 在表达式中时表示使用a自增之后的值进行计算)
自增、自减副作用
27、函数
28、指针
29、二维数组表示法
30、C风格字符串
31、函数指针
32、使用函数指针调用函数
33、函数指针数组
34、内联函数 inline 关键字声明;编译器将部分常规函数优化成 内联函数;内联函数 是程序编译成二进制指令时,直接将函数体的二进制指令编入,而不是记录函数的内存地址。(内联函数不能递归)
35、内联 与 宏函数 ;内联有类型检查与类型转换;而宏函数定义,仅仅是在预处理时做了 文本替换。
36、引用 变量的别名(引用声明时必须初始化)