created by Dejavu
(完结)
默认参数
- 函数的默认参数的设置只能从后向前写,且只能定义一次
int function(int a,int b,int c=0,int d=0) {
//do some thing;
return 0;
}
//使用
function(1,2); //a=1,b=2,c=0,d=0
function(1,2,3); //a=1,b=2,c=3,d=0
function(1,2,3,4); //a=1,b=2,c=3,d=4
inline的使用
- 函数调用问题阐述
int function() {
//do some thing
return 0;
}
int main() {
function();
return 0;
}
-
运行顺序
函数调用执行顺序,程序从main函数开始执行代码,调用function函数时main函数将记录函数当前执行的位置,进入function函数入口,当function执行完成后,跳转回main函数进行执行直到结束 -
问题分析
可见函数在跳转和恢复的时候将会增加程序运行的开销(传递,调用开销),当然这个开销不会超过运行函数本身代码产生的开销,但是如果一些函数很频繁的在某些的函数中调用,这将会增加很多不必要的开销,所以我们需要一种方法将调用函数与主函数关联起来 - inline的使用与限制
inline int function() {
//do some thing
return 0;
}
内联函数适用于经常使用的小函数。对于内联函数的函数体有一些限制:
1.内联函数中不能含有任何循环以及switch和goto语句;
2.内联函数中不能定义数组;
3.递归函数不能定义为内联函数。
在类的说明中定义的成员函数缺省为inline方式,如果在类外定义,则不再缺省为inline
函数重载
- 这里c++的重载与java的重载方式是相似的,但是不支持函数类型重载
void function(int a);
void function(int a,int b);
void function(char a);
void function(char a,int b);