1、 函数参数默认值
void fun(int i,int j=5;int k=10);
void fun(int i,int j=5,int k);//错误,没有默认值的参数放前面
实参可以覆盖形参的值
2、函数重载
什么是函数重载?
在相同的作用域内,
用同一函数名定义的多个函数
参数个数和参数类型不同
int getMax(int x,int y,int z)
{
//to do
}
double getMax(double x,double y)
{
//to do
}
3、内联函数
普通函数调用经这几个步骤
例如你调用一个fun()
会从主函数跳到fun()里面,执行完fun()后回到主函数
编译时将函数体代码和实参代替函数的调用语句
也就是说用fun()里面的代码换掉主函数的fun()
内联函数关键字:inline
inline int max(int a,int b int c);
int main()
{
int i=10,j=20,k=30,m;
m=max(i,j,k);
cout<<"max="<<m<<endl;
return 0;
}
//代码展开
int main()
{
int i=10,j=20,k=30,m;
a=i;b=j;c=k;
if(b>a)a=b;
if(c>a)a=c;
m=a;
cout<<"max="<<m<<endl;
return 0;
}
为什么不所有的函数都使用内联方式呢?
1、内联编译时建议性的,由编译器决定
2、逻辑见到那,调用频繁的函数建议使用内联
3、递归函数无法使用内联方式