• 关于函数模板和函数重载 默认参数


    1 内联函数:

        1 取消了函数调用的环节。

        2 对于内联代码,程序无需调到另一个位置执行代码,再跳回来。因此,内联函数的运行速度比常规的快,,但占用的空间业更多。

        3 要成为内联函数,要在函数定义或者声明前加关键字 inline

        例如:inline int square()

    {

    }

        4 内联函数中不允许用循环语句和switch语句

        5 内联函数的声明必须出现在内联函数第一次调用之前

    2  函数重载

      1 函数名相同,参数不同,或者是函数类型不同

      例如:   void swap(int a,int b)

          void swap(float a,float b)

          int swap(float a,float b)

    3 函数模板

        概念:使用虚拟类型来定义函数

    模板定义:

    template <typename T>

    void swap(T a,T b);

    在函数中 比如 int i = 10; int j = 20;

           swap(i,j);

          比如 char i = 10; char j = 20;

           swap(i,j);

    类型会自动转换

        模板的局限性:类型不能是数组,结构体之类的

     4 默认参数

     1 int aaa(int i=10 ,j=10)
     2 {
     3     cout<<i+j<<endl;  
     4 }
     5 
     6 
     7 //通过主函数调用aaa时
     8 
     9 int main()
    10 {
    11     aaa(20,30);//i=20 j=30
    12     aaa(9);//i=9 j=10
    13     aaa();//i=10 j=10  
    14 }

    注意事项:

    11 在有默认值的右边,不能出现无默认值的形参 例如:

    int abc(int i=10 ,int j)是错误的

    2 函数不能是重载函数,又是带默认值的(这个好理解,因为重载函数的参数类型不一致,不可能同时表示出来的)

    3 如果函数在定义时设置了默认参数,在声明时就不能再次设置了,反之亦然。

    4 默认值可以是一个常量,全局变量,甚至是一个函数调用,不可以是全局变量

        

  • 相关阅读:
    反射 Reflect Modifier 修饰符工具类
    【泛型】Generic 参数化类型 类型转换
    泛型 Generic 类型擦除引起的问题及解决方法
    注解 Annotation 简介 总结 MD
    反射 Reflect Class 基础 API MD
    【Type】类型 ParameterizedType
    Java中浮点类型的精度问题 double float
    jQuery之$.ajax()方法详解及实例
    pace.js – 加载进度条插件
    在线代码编辑、保存与运行网址推荐
  • 原文地址:https://www.cnblogs.com/tiantiantian-dianzi/p/5605455.html
Copyright © 2020-2023  润新知