C++笔记之函数新特性
2017-01-08 21:04
113 查看
一、函数参数默认值
C++中定义函数时可以这样定义和声明:void fun(int i, int j = 5, int k = 10);
void fun(int i, int j , int k ){
/**函数体**/
cout << i << j << k;
}
在声明函数时为函数参数 赋一个默认值,其中j和k在调用时是可选项,调用该函数时,可以传一个参数,也可以传两个参数,也可以传三个参数。如果,只传一个参数,那么j和k的默认值就为5和10。
注意:有默认参数值的参数必须在参数表的最右端。
#include <iostream> using namespace std; void fun(int i, int j = 5, int k = 10); int main(){ fun(20);//打印结果为20510 fun(20, 30);//打印结果为203010 fun(20, 30, 40);//打印结果为203040 } void fun(int i, int j = 5, int k = 10){ /**函数体**/ cout << i << j << k; }
二、函数重载
在相同作用域内,用同一函数名定义的多个函数,参数个数和参数类型不同。返回值类型不同不能算作函数重载。
假设有两个函数实现了重载:
getMax(int x, int y, int z){}
getMax(double x, double y){}
他们实际在计算机中存储的形式分别为:
getMax_int_int_int和getMax_double_double
所以他们的函数名虽然相同,但是由于参数列表不同,所以在计算机内部是不同的函数,计算机是可以分辨出重载的函数的。
三、内联函数
声明函数时,在函数类型前面加上inline修饰,这个函数就变成了内联函数。引用自:当函数被声明为内联函数之后, 编译器会将其内联展开, 而不是按通常的函数调用机制进行调用。
也就是说,当函数被声明为内联函数之后,程序编译时,当遇到这个函数时,主调函数内调用函数的那部分语句将被函数体语句覆盖。在函数调用非常频繁时,建议使用内联,这样会节省很多时间。
内联函数的逻辑结构应该尽量简单,不应包含for循环、while循环等复杂的结构。
递归函数不应该被声明为内联函数。
内联编译是建议性的,由编译器决定。即使函数被声明为内联函数,在编译时可能也不会以内联的方式编译。
在类中声明的函数,即使不在声明前加“inline”关键字,编译器在编译的时候也会优先将函数编译为内联函数,但是如果函数体逻辑结构太复杂,就会编译成普通的函数
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C++的template模板中class与typename关键字的区别分析
- C与C++之间相互调用实例方法讲解