函数的默认参数
默认参数是指调用函数的时候,如果不书写实参,那么将使用的一个缺省值。
语法:返回值 函数名(数据类型 参数=值, 数据类型 参数=值,……);
注意:
- 如果函数的声明和定义是分开书写的,在函数声明中书写默认参数,函数的定义中不能书写默认参数。
- 函数必须从右到左设置默认参数。也就是说,如果要为某个参数设置默认值,则必须为它后面所有的参数设置默认值。(即以左边标定排队,有默认值意味可以空着,一列队伍不能前面或者中间空着)
- 调用函数的时候,如果指定了某个参数的值,那么该参数前面所有的参数都必须指定。
函数重载
函数重载(函数多态)是指设计一系列同名函数,让它们完成相同(似)的工作。
C++允许定义名称相同的函数,条件是它们的特征(形参的个数、数据类型和排列顺序)不同。
在实际开发中,视需求重载各种数据类型,不要重载功能不同的函数。
注意:
- 使用重载函数时,如果数据类型不匹配,C++尝试使用类型转换与形参进行匹配,如果转换后有多个函数能匹配上,编译将报错。
- 引用可以作为函数重载的条件,但是,调用重载函数的时候,如果实参是变量,编译器将形参类型和形参类型引用视为同一特征。
- 如果重载函数有默认参数,调用函数时,可能导致匹配失败。
- const不能作为函数重载的特征。
- 返回值的数据类型不同不能作为函数重载的特征。
- C++的名称修饰:编译时,对每个函数名进行加密,替换成不同名的函数。
1 2 3 4 |
void MyFunctionFoo(int,float); void MyFunctionFoo(long,float); ?MyFunctionFoo@@YAXH(int,float); #void MyFunctionFoo^$@(long,float); |
内联函数
C++将内联函数的代码组合到程序中,可以提高程序运行的速度。
普通的函数重复调用将产生多次重复的调用开销,将函数声明为内联函数则可能会将函数嵌入调用程序中,增大内存但减少调用开销。
语法:在函数声明和定义前加上关键字inline。
通常的做法是将函数声明和定义写在一起。
注意:
- 内联函数节省时间,但消耗内存。
- 如果函数过大,编译器可能不将其作为内联函数。
- 内联函数不能递归。
留言