C++函数

一、函数的默认参数:

  所谓的默认参数实际上就是函数在调用的时候可以省略参数,如:

void fun(int a=0,int b=0){
    cout<<a<<" "<<b<<endl;
}int main(){

    fun();  //0 0
    return 0;
}

  使用函数默认参数需要注意的问题:

    参数默认必须是按从后向前的顺序, 例如 fun(int b, int n = 100) 这样是合法的, 而 fun(int n = 100, int b) 就是不合法的, 因为编译器会将传入的参数一一对应, 传入1个参数时编译器就会与默认参数对应起来, 此时b就没有传入参数, 也就自然报错了。如果传入两个那么默认参数也就没有存在的意义, 所以编译器规定参数默认必须是按从后向前。

 

void fun(int a=0,int b=0){
    cout<<a<<" "<<b<<endl;
}
void run(int a,int b=10){
    cout<<a<<" "<<b<<endl;
}
int main(){

    fun();  //0 0
    fun(2,3);   //2 3
    run(); //error:too few arguments to function 'void run(int,int)'
    run(2,3)    //2 3
    return 0;
}

 

二、inline函数:

  inline函数又叫作“内联函数”,它主要运用在函数体内容语句较少,而函数体又被频繁调用的情况下

  如果这种函数前面不加上inline,会浪费很多时间:

  why?:在一个函数中调用另一个函数时,首先系统会先中断该函数,做一些现场保护工作,之后会执行被调用的函数,执行完系统恢复中断,继续执行该函数,如果函数体内需要执行的语句很多的话,这点保护现场的时间可以忽略不计,但是如果函数内的语句很少,那么这个时间开销变不可忽略,而inline函数就是相当于把函数体直接放在主函数中一样,成为主函数的语句,在运行时可以直接调用,而不是重复的进行中断操作.

inline void fun(){
    cout<<"Hello"<<endl;
}
int main(){

    for(int i=1;i<=100000;i++){
        fun();
    }
    return 0;
}
没有内联    //Process returned 0 (0x0)   execution time : 0.616 s
内联inline //Process returned 0 (0x0)   execution time : 0.632 s

  在使用inline函数时需要注意的几点问题:
        1>. inline 函数的函数体语句不适合过多 ;
        2>. inline 函数中不能有 循环、if或switch语句, 否则编译器将会把该函数当做普通函数来处理 ;
        3>. 一个文件中定义的inline函数不能再另一个文件中使用 。

 

  

posted @ 2015-10-07 14:53  一样菜  阅读(220)  评论(0编辑  收藏  举报