- C++自动地以缺省值作为相应参数的值。
int init(int x=5,int y=10);
- 进行函数调用时,编译器按从左向右顺序将实参和形参结合,若未指定足够的实参,则编译器按顺序调用函数原型中的缺省值来补足所缺少的实参。
- 不能出现 以 下 调 用 init() 函 数 的 语 句 :init(,20);
内联函数:
- 内联函数体内一般不能有循环语句和开关语句。
- 类结构中所有在类说明体内定义的函数都是内联函数。
函数重载:
- 两个或两个以上的函数可以使用相同的函数名
- 函数的重载与带缺省值的函数一起使用时,有可能引起二义性
- void DrawCircl(int r=0;int x=0;int y=0);
- void DrawCircle(int r);
- 传参时无法分辨类型会报错
- void f_a(int x);
- void f_a(long x);
引用:
用来为变量起别名,它主要用作函数参数以及作为函数的返回值类型
- 不能建立void型引用、引用的引用、指向引用的指针、引用数组
- 引用参数使得实在参数变量的作用域“扩大”到原先无法进入的被调函数中。
- 引用是能自动间接引用的一种指针”无需使用指针运算符“*”就可以得到或修改一个变量的值
- 调用引用返回函数
1.独立的函数语句;
2.表达式中的某一个运算对象;
3.作为左值(即赋值号左边的变量),这是引用作为返回值的函数的一个主要用法;
动态分配内存:
堆可由程序员分配和释放。
- C语言中使用函数malloc()和free()等来进行动态内存 管 理 。 并 在 程 序 的 头 部 嵌 入 相 应 的 头 文 件 :#include <stdlib.h>。
- 函数malloc()和函数calloc()的主要区别是前者不能初始化所分配的内存空间,而后者能。
- C++则提供了操作符new和delete
- new将分配的对象初始化。
- new和delete都可以被重载,允许建立自定义的内存管理算法
- int *pi=new int [10];
- delete []pi;
异常处理:
- 使用了throw和try-catch语句支持异常处理
- 一个try-catch结构中只能有一个try块,但却可以有多个catch块
- 在某些情况下,在throw语句中可以不包括表达式
步骤:1.程序顺序执行try块中的语句
2.如果在执行try块内的各条语句中都没有发生异常,则跳过catch块,转到执行catch块后面的语句。
3.如果在执行try块内的某一条语句中发生异常,则由被调函数的throw抛出异常信息。
4.由throw抛出的异常信息提供给catch块,系统寻找与之匹配的catch子句,进行异常处理后,程序继续执行catch子句后面的语句,而跳过try中的剩余语句。