函数,默认参数的使用
在C++中,允许在自定义函数的形参列表中,给形参一个默认的值,这样在调用的时候如果有实参,那么按照实参传递给形参的方法使用;若调用的时候没有指定对应的实参,则形参将使用默认值。
由于参数的传递顺序是从右至左入栈,所以有默认值的参数必须在放在形参列表的最右边!
1 2 3 4 5 6 7 8 9 10 11 12 13
   | #include<iostream> using namespace std; int Sum(int a=4,int b=5) { 	return a+b; } int main() { 	cout<<Sum(5,7)<<endl; 	cout<<Sum()<<endl; 	cout<<Sum(9)<<endl; 	return 0; }
   | 
 

函数重载
函数重载即两个或以上的函数,函数名相同,但形参类型或个数不同,编译器根据调用方传入的参数的类型和个数,自动选择最适合的一个函数来进行绑定调用,自动实现选择。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
   | #include<iostream> using namespace std; int sum(int a,int b) { 	return a+b; }
  double sum(double a,double b) { 	return a+b; }
  double sum(double a,int b) { 	return a+b; }
  double sum(int a,double b) { 	return a+b; }
  int main() { 	cout<<sum(1,2)<<endl; 	cout<<sum(1.414,2.526)<<endl; 	cout<<sum(3.14,6)<<endl; 	cout<<sum(8,9.9)<<endl; 	return 0; }
   | 
 

函数模板(template)
模板是创建泛型类或函数的蓝图或公式。是泛型编程的基础。
函数模板,是可以创建一个通用的函数,可以支持多种形参。用关键字template来定义
模板函数定义的一般形式
template<class 类型名1,class 类型名2>
返回值 函数名(形参列表)
{
	函数体
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | #include<iostream> using namespace std; template<class T1,class T2> T1 sum(T1 a,T2 b)
 
  { 	cout<<sizeof(T1)<<","<<sizeof(T2)<<"\t"; 	return a+b; } int main() { 	cout<<sum(1,2)<<endl; 	cout<<sum(3.14,1.414)<<endl; 	cout<<sum('A',2)<<endl; 	return 0; }
   | 
 

inline内联函数
- 内联函数的基本思想在于将每个函数调用都以它的代码体来替换
 
- 内联函数减少了不必要的函数栈帧的开销,节约内存
 
- 内联函数以空间换取了时间,但是inline对编译器只是一个建议,如果定义的函数体内有循环或递归等,编译器优化时会自动忽略掉内联
 
1 2 3 4 5 6 7 8 9 10 11 12 13
   | #include<iostream> using namespace std;
  inline int Max(int a,int b) {     return a>b?a:b; } int main() {     cout<<Max(3,5)<<endl;     cout<<Max(7,9)<<endl;     return 0; }
   | 
 
内联函数的定义要在调用之前出现