• 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函数不能再另一个文件中使用 。

      

  • 相关阅读:
    RedisTemplate使用事务处理
    maven命令学习
    springboot学习地址
    Mycat实现读写分离
    springboot-异步线程调用
    java多线程ExecutorService
    IntelliJ Idea 常用快捷键列表
    springMVC请求处理过程
    记录一次面试题
    java面试题-java内存模型
  • 原文地址:https://www.cnblogs.com/mypsq/p/4858701.html
Copyright © 2020-2023  润新知