(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){}
如果一组重载函数(可能带有默认参数)都允许相同实参个数的调用,将会引起二义性。
默认值的限制:
默认值可以是全局变量、全局常量、甚至是一个函数。
默认值不可以是全局变量。
内联函数也称内嵌函数,主要是解决程序的运行效率问题。
关键字: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){}
如果一组重载函数(可能带有默认参数)都允许相同实参个数的调用,将会引起二义性。
默认值的限制:
默认值可以是全局变量、全局常量、甚至是一个函数。
默认值不可以是全局变量。
相关文章推荐
- linux下C语言中的flock函数用法
- Linux下 fcntl 函数用法说明
- linux函数用法
- Linux下Kill函数用法
- linux关于sort命令的高级用法(按多个列值进行排列)
- sscanf函数的高级用法
- [转贴] sscanf函数的高级用法
- <转>jQuery动画高级用法(上)——详解animation中的.queue()函数
- linux高级编程常用的系统调用函数整理
- python中的内置函数max()和min()及mas()函数的高级用法
- jmeter高级用法例子,如何扩展自定义函数
- Linux Socket编程(不限Linux)基本函数用法
- sscanf函数的高级用法
- Linux编程下open()函数的用法
- Linux下 fcntl 函数用法说明
- getopt_long函数基本用法-linux
- 3.linux C 用man查各种函数的用法
- jQuery动画高级用法(上)——详解animation中的.queue()函数 http://www.cnblogs.com/hh54188/archive/2011/04/09/1996469.
- linux - vi/vim编辑器-高级用法
- Unix/Linux编程之ftok函数用法