关于函数模板和函数重载 默认参数
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 默认值可以是一个常量,全局变量,甚至是一个函数调用,不可以是全局变量