Day1
1.C++与C的区别
1.1 C++兼容一切合法的C的程序,C++是C的增强版
1.2 C++中扩展更多的内容,数据类型:引用、类类型、布尔类型等
1.3 设计思路不同:C++是面向对象,面向对象是指:注重结果,不在乎过程;
C是面向过程,面向过程是指:注重过程,只有过程正确才能得到结果。C语言中也有面向对象----结构体,只是不够彻底
2.命名空间
2.1 产生的原因:
为了解决命名冲突问题(变量、函数、自定义的数据类型)
2.2 命名格式
namespace 命名空间的名字(可以是变量,函数、自定义的数据类型)
例如:namespace s1
2.3 使用
2.3.1 命名空间名::变量名
例如:printf("a = %d\n",s1::a);
2.3.2 using namespace 命名空间名字;
例如:using namespace s1;
3.标准输入输出流
3.1 输入流对象 cin
使用:cin>>变量
3.2 输出流对象 cout
使用:cout<<变量
4.引用类型
4.1本质
给变量取别名
4.2 定义格式
数据类型 & 引用名(给变量起的别名) = 变量名;
例如:int & pt = p;
4.3引用存在的意义
弱化指针;减少临时空间的分配,只要定义一个指针变量,就要分配相应的内存空间;引用不需要分配内存空间。
4.4用途
应用在函数参数的设计上。
4.5引用和指针的区别
4.5.1引用是给变量起别名的;指针使用来保存地址的。
4.5.2定义引用不会额外的分配内存空间;只要定义指针变量系统就会给它分配内存空间。
4.5.3引用定义完必须进行初始化;指针变量定义完之后可以不进行初始化,但是一般为了避免野指针的出现,会将指针变量初始化为NULL。
4.5.4引用初始化之后不可以改变指向;但是指针变量是可以改变指向的。
5.函数重载
5.1 是什么
函数命名时,实现相似功能的函数名可以一样。
5.2 存在的意义
解决了函数命名难的问题。函数功能相似,参数不同(参数类型不同,参数个数不同)的一组函数。在C中不同出现同名函数,但C++中可以。
5.3 定义
函数名相同,函数功能相似,参数不同(参数类型不同,参数个数不同,参数类型的顺序不同),与返回值类型无关的一组函数
5.4 函数重载的原理
使用C++进行编译时,函数名会根据函数类型以及参数个数进行重命名,函数名会发生变化,函数在内存中的地址就不同,调用的时候执行的就是不同的函数体。
6. 参数默认值
6.1 是什么
在函数定义的时候给了形参一个初始值。
6.2 解决问题
当函数参数有默认值,可以解决在函数重载时,只有参数个数不同二造成的代码冗余。
6.3 使用时的注意事项
6.3.1 参数默认值给的顺序是:从右向左;调用函数的时候参数匹配的顺序是:从左向右。
6.3.2 在函数重载时,要注意“二义性”
6.3.3 当函数声明和函数定义同时存在时,参数的默认值只能出现一次,最好放在函数声明中。
7.在C++中引入C的库
7.1 标准库
直接#include<> 即可
7.2 自定义库
在.c文件中加入 extern "C" {}
8.动态内存分配
8.1 开空间
8.1.1 new运算符
使用格式:(1)数据类型 * 指针变量 = new 数据类型;
例如:int * p = new int;
(2)数据类型 * 指针变量 = new 数据类型[个数];
例如:int * p = new int[5];
8.2 释放空间
8.2.1 delete运算符
使用格式:(1)delete 指针变量;
例如:delete p;
(2)delete [] 指针变量;
例如:delete [] p;
8.3 new和malloc的区别
8.3.1 new是C++中的运算符;malloc是C中标准的库函数。
8.3.2 new 后面只跟数据类型即可,并且开空间后不需要进行强制类型转化;malloc开空间:要给开空间的大小,并且开空间后要进行强制类型的转换。
8.3.3 new开的空间用delete释放;malloc开的空间有free去做释放。
8.3.4 new开的空间可以做初始化;malloc开的空间初始化只能用memset去初始化。
Day2
1.面向对象编程中的类和对象