函数定义,参数传递,重载,内联函数等

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);这是形参个数不同;

这两点是区别重载函数的机制。

posted @ 2018-01-03 10:18  笔耕先生  阅读(242)  评论(0编辑  收藏  举报