您的位置:首页 > 编程语言 > C语言/C++

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++