zoukankan      html  css  js  c++  java
  • 关于函数模板和函数重载 默认参数

    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 默认值可以是一个常量,全局变量,甚至是一个函数调用,不可以是全局变量

        

  • 相关阅读:
    [置顶] cocos2d-x 3.0游戏开发xcode5帅印博客教学 003.[HoldTail]游戏世界以及背景画面
    flex调用webservice中的datatable结果写入datagrid
    linux shell编程指南第十一章------------合并与分割2
    Java GUI使用exe4j打包exe文件
    最小生成树kruskal算法
    JQuery Datatable Ajax请求两次问题的解决
    其实我还好
    EFM32在使用IAR开发环境配置ICf文件以及指定程序存储地址空间
    hdu1151Air Raid
    UIWebview打开.txt文件中文乱码解决
  • 原文地址:https://www.cnblogs.com/tiantiantian-dianzi/p/5605455.html
Copyright © 2011-2022 走看看