C++学习 之 函数的重载及内联(笔记)
1.函数的使用:
1.1 将数组传递给函数:
当需要给函数传递数组作为参数时,其实传过来的是实参的地址就相当于使用引用或指针作为形参。
例:
int DisPlayArray(int Number[],int L) { for(int i=0;i<L;i++) cout<<"Array["<<i+1<<"]: "<<Number[i]<<endl; return 0; }
1.2 带默认值的函数参数:
定义一个函数,当我们输入参数时就使用输入的参数,没有实参时就使用初始值。
可以按如下定义:
double area(int r,int h=0);//有初始值的参数要在无初始值的参数的后面定义 int main() { int r=4; area(r);//如果area函数的初始化后的参数定义在前,就导致我们传给形参r的值传给了h,这样函数调用时就缺了参数值,编译报错
return 0; }
2.函数的重载:
重载函数是指名称返回类型相同,但参数不同的函数。当我们需要同名函数并且参数不同时,重载函数就很有用。
例如计算圆的面积和圆柱体的表面积:
double area(int r)//r为圆的半径参数 { cout<<3.14*r*r<<endl;
return 0; } double area(int r,int h)//r为底面半径参数,h圆柱高度参数 { cout<<2*3.14*r*h+3.14*r*r*2<<endl;
return 0;
}
3.内联函数
内联函数是会在调用它的地方直接展开的函数;内联函数的代码应该是简短的。常规函数调用会导致栈操作、微处理器跳转到函数等操作,这个过程是很快的;但是如果函数比较简短这些操作就显得性价比不是很高。
例如我们声明了如下功能的函数(定义Pi的值):
double GetPi()
{ return 3.14159265; }
像这样比较简单的函数我们就可使用内联的方法,从而减少调用用的时间。
内联函数声明:
inline double GetPi() { return 3.14159265; }
将函数声明为内联会导致代码急剧膨胀,尤其是当函数进行了大量复杂操作时,例如循环等。所以我们要尽可能少的使用内联函数,除非函数特别简单需要降低开销。