zoukankan      html  css  js  c++  java
  • 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函数不能再另一个文件中使用 。

      

  • 相关阅读:
    (待续)【转载】 Deep Reinforcement Learning Doesn't Work Yet(这里有一篇深度强化学习劝退文)
    【转载】 深度强化学习走入「死胡同」,继续死磕电子游戏还是另辟蹊径?
    【转载】 Docker-关于docker cpu的限制后,实际效果的研究
    个人常用的 matplotlib 绘图模板
    【转载】共轭梯度法(视频讲解) 数值分析6(3共轭梯度法) ——苏州大学
    【转载】 向量,标量对向量求导数
    【转载】 Linux Hang Task 简介
    AOC U2790PC对比上一代的AOC U2790PQU怎么样?
    屏幕ppi
    ubuntu杀死进程
  • 原文地址:https://www.cnblogs.com/mypsq/p/4858701.html
Copyright © 2011-2022 走看看