C++与C的关系与区别:
1.在C语言中引入了面向对象的思想
2.是一种混合型的语言,同时支持结构化程序设计和面向对象程序设计方法
3.向下兼容C语言,可不加修改地使用C语言代码
4.允许数据抽象,支持封装、继承和多态等特征
面向过程:每一步都是自己实现、执行的
例如:买菜->洗菜->切菜->炒菜->吃->洗碗
面向对象:多个对象之间的操作
例如:用户->下单->老板->厨师->外卖小哥->用户->取餐->吃
C++的标准库:
1、直接使用标准C中所有库,如以下是常用的标准C函数库头文件:
stdio.h ==>> iostream
stdlib.h
string.h
ctype.h
2、C++编译器都提供有完整的标准库
3、C++标准库中的几乎所有内容都是在命名空间std中定义的-->standerd
4、使用C++标准库将获得非常多的功能
C语言关键字有32个、C++有74个关键字
C++中的数据类型
C++中增加的作用域标识符 ::
用于对与局部变量同名的全局变量进行访问
用于表示类的成员,这将在关于类的一节中详细说明
st1 : : myprint( )或 st1 : : i
使用命名空间名+域运算符就可以调用命名空间内的函数或变量
动态分配内存:
静态分配内存:在编译时确定了固定的内存地址与内存大小,如:函数里的局部变量、全局变量等
动态分配内存:由程序控制,运行时主动性的向系统申请所需大小的内存段,并且每次分配到的内存地址不固定
C++ 可以使用malloc、realloc、calloc和free函数实现,也可以使用运算符new和delete实现
Malloc出来的要用free释放 new出来的空间使用delete释放
new运算符:
new 运算符 可以用于创建堆空间
创建成功返回首地址,失败返回NULL
语法:
指针变量=new 数据类型;
指针变量=new 数据类型[长度];
例如:
int *p; p=new int;
char *pStr=new char[50];
delete运算符:
delete运算符 可以用于释放堆空间
语法:
delete 指针变量;
delete [ ] 指针变量;-->释放开辟的数组需要加[ ]
例如:
delete p;
delete [ ] pStr;
函数重载:函数名相同,参数列表不同,体现在参数的数量,类型,顺序上
C++允许用相同的函数名来定义一组功能相同或类似的函数,程序的可读性增强
函数重载又称为函数的多态性
函数重载不同形式:
形参数量不同
形参类型不同
形参的顺序不同
形参数量和形参类型都不同
调用重载函数时,编译器通过检查实际参数的个数、类型和顺序来确定相应的被调用函数
在编译时就确定了要调用的函数--->静态绑定
引用类型:
引用是一种特殊的变量,可以认为是一个变量的别名
定义引用的一般格式:
类型说明符 &引用名 = 变量名;
例如:int a=1;
int &b=a;
// b是a的别名,因此a和b是同一个单元
注意:定义引用时一定要初始化,指明该引用变量是谁的别名
对数组只能引用数组元素,不能引用数组(数组名本身为地址)。
不能定义引用的引用(引用也是地址),所以当函数的参数为引用时,引用不能作实参。
按引用传递:
引用传递方式是在函数定义时在形参前面加上引用运算符"&"
例如:swap(int &a,int &b);
按值传递方式容易理解,但形参值的改变不能对实参产生影响
地址传递方式通过形参的改变使相应的实参改变,但程序容易产生错误且难以阅读
引用作为参数对形参的任何操作都能改变相应的实参的数据,又使函数调用显得方便、自然