中心主题 1、C++与C的区别 1.C++是完全兼容C,只要是合法的C语言程序在C++中都是合法的 2.C++比C额外扩充了非常多的内容; 3.编程思想不一样 C是面向过程的结构化程序设计语言:更注重的过程,其实在C中结构体就在面向对象编程了,但是不够彻底 C++是面向对象的编程语言:更注重结果的。整个程序中都是一个一个的对象。 2、命名空间 作用 解决命名冲突的问题(变量重名、函数重名、自定义的数据类型) 分类 有标准的命名空间也有自定义的命名空间 格式 namespace{ }; 使用 方法1: 命名空间的名字::变量名等! 方法2: using namespace 命名空间名字; 直接使用; 3、标准输入输出流 什么是流:以字节为单位,连续不断,方向统一的就是流 C中标准的输入输出:printf和scanf---头文件 stdio.hC++中输入输出流: iostream using namespace std; 输出流对象Cout: 输出数据到标准输出设备上 输入流对象Cin: 从标准输入设备上输入数据到变量中 好处:在操作的时候不要指定数据的格式 4、引用类型 目的 弱化指针,因为指针能实现的效果,引用一样也可以实现 减少了临时空间的分配,因为定义指针变量系统是会给分配内存空间的,但是引用类型是不需要分配内存空间的 什么是引用 引用就是给一个变量起个别名 ,说明它和变量本身是同一个 定义引用:数据类型 &引用名 = 变量名; 特点: 必须初始化,引用不可以改变指向 作用:1.作为函数参数,传参如果在函数内容对变量的值做了修改,外部变量本身的值也会发生变化 Const修饰的变量一般都出现在函数的参数上,为了保证数据在传递的过程中,值不被修改,保证数据的安全性 8、动态内存分配 c mallocfree c++ newdelete 7、C++如何引入C的库 生成的静态库在c中可以使用,同样的在c++中也要能够使用的 : gcc编译函数名不会发生变化,但是用g++编译函数进行了重命名,函数地址后发生变化了,找不到对应的函数 区分是gcc编译器还是g++编译器在.h中加入判断以及处理方式 6、参数默认值 解决问题 当函数重载中出现只有函数参数个数不同的情况下,可以通过给参数设置默认值来减少重载函数的个数,减少代码冗余! 当函数的参数有默认值的情况下,要注意二义性(调用冲突 当函数的参数有默认值,在调用函数的时候可以给值,也可以不给值;给了值,就按给的值,如果没有给值,按默认的值去做处理 参数默认值给的顺序从右向左调用时给参数的顺序是从左向右 5、函数重载 解决问题 函数功能相似,唯有函数的参数类型不同、个数不同等一组函数 定义 一组函数功能相似、函数名相同、函数的参数不同(参数的类型不同、个数不同、参数顺序不同),与返回值无关的函数互为重载 函数调用原理 g++编译后函数的名字会发生变化: 重命名之后的函数名是根据参数类型与参数个数+函数名字组成的 每一个函数在内存中都有对应的地址;调用的时候就是根据这个地址找到对应的函数体,去执行 函数重载的原理: g++编译,函数名会根据形参个数+形参类型进行重命名,这样子调用的时候就可以知道应该执行哪一个函数