代码改变世界

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

2016-06-21 23:46  小竹心语  阅读(545)  评论(0编辑  收藏  举报

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