函数进阶

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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容