您的位置:首页 > 运维架构 > Linux

(Linux,c++)函数的高级用法

2012-08-20 20:33 204 查看
1、内联函数

内联函数也称内嵌函数,主要是解决程序的运行效率问题。

关键字:inline

编译器看到inline后,为该函数创建一段代码,以便在后面每次碰到该函数的调用都用一段代码来替换。

内联函数可以在一开使仅声明一次。

内联函数必须在调用前被声明或定义。

内联函数的函数体限制:

不能含有复杂的结构控制语句

递归函数是不能用来做内联函数的

内联函数只适合于只有1~5行的小函数

2、重载函数

对于在不同类型上作不同运算而又用同样的名字,称之为重载

int abs(int);

long abs(long);

double abs(double);

匹配重载函数的顺序

寻找一个严格的匹配,如果找到了,就是那个函数

通过内部装换寻找一个匹配,只要找到了,就用那个函数

通过用户定义的转换寻求一个匹配,若能查出有唯一的一组转换,就用那个函数

对于int形参, 0,char,short int都是严格匹配

对于double形参, float也是严格匹配

c++允许int到long, int到double的转换

避免二义性编译错误

使用说明:

(1)c++的函数如果在返回类型、参数类型、参数个数、参数顺序上有所不同,则认为是不同的.但重载函数仅仅是返回类型不同是不够的

(2)typedef定义的类型只能使之相同于一个已经存在的类型。不能用typedef定义的类型名来区分重载函数声明中的参数

(3)让重载执行不同的功能,是不好的编程风格

3、递归函数

在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。

递归调用的形式:

直接递归调用

间接递归调用

递归的条件:

(1)须有完成函数任务的语句

(2)一个确定是否能避免递归调用的测试

(3)一个递归调用语句

(4)先测试, 后递归调用

4、默认参数的函数

默认参数在函数声明中提供。当又有声明又有定义时,定义中不允许默认参数。如果函数只用定义, 则默认参数才可以出现在函数定义中。

默认参数的顺序规定:

如果一个函数中有多个默认参数,则形参分布只中,默认参数应从右至左逐渐定义。当调用函数时,只能向左匹配函数。

默认参数可将一系列简单的重载函数合成为一个。

void point(int, int){// }

void point(int a){return point(a, 4);}

void point(){return point(3, 4);}

用默认参数函数代替

void point(int a=3, int b=4){}

如果一组重载函数(可能带有默认参数)都允许相同实参个数的调用,将会引起二义性。

默认值的限制:

默认值可以是全局变量、全局常量、甚至是一个函数。

默认值不可以是全局变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: