函数定义,参数传递,重载,内联函数等
1.调用函数之前必须先提前函数原型声明(原因:函数的定义和调用往往不在一个程序或者函数体定义在调用之后)
函数原型指的是:
类型识别符 函数名(含类型说明的形参表)
调用时就是:
函数名(实参表)
2.形参不确定个数,定义可变参数的函数
用到initializer_list,(具体还不清楚)
3.内联函数(inline)简单的函数在调用时不值得经过转子函数的花销。inline只是对编译器的建议。(编译器会自己决定)
是为了提高效率,编译器直接操作,不做调用和返回。同时简单的函数可能多次使用,多处调用,为了代码的重用。
注意:内联函数内不能出现循环语句和switch语句;
内联函数定义必须出现在函数第一次被调用之前;(和之前说一般函数定义和调用相比略微特殊)
4.constexpr函数(还不懂)
5.带默认参数值的函数
在定义函数时可以预先给定形参参数值,如果调用时给了实参值就用实参,没有就直接用形参参数值;
注意:有默认参数值的形参必须列在形参表的最右,因为调用时实参和形参的结合次序是从左向右的。
int add (int x, int a=3, int b=4);
如果函数原型声明在前面,函数体定义在函数调用之后或者在另外的文件中,默认参数值的定义必须放在函数原型;
如果函数体定义在函数调用前面,可以在定义时直接给出形参值。
6.函数重载:(原因:功能相同,但是形参类型和返回值类型不同)
比如:int add( int x, int y);
float add(float a,float b);这是形参类型不同;
再比如:
int add(int x, int y);
int add(int x, int y, int z);这是形参个数不同;
这两点是区别重载函数的机制。