使用默认参数:
默认值可以在函数原型或者定义中给出,不能在两个位置同时出现
对于带参数列表的函数,必须从右向左添加默认值
void test1(int a=1,int c=b,int c=5); 是可以的,调用例如 test1(1,2); test(5,6,7);
void test2(int a=2,int b,int c=3); 是错误的
函数重载的规则:
函数名称必须相同
参数列表必须不同,(参数的个数不同、类型不同、或顺序不同)
函数的返回类型可以相同也可以不同
仅仅返回类型不同 不足以成为函数的重载
函数重载:
指可以有多个同名的函数
函数名相同,参数列表不同(特征标不同)
重载----编译器在编译时,根据参数列表对函数进行重命名,为避免混乱,编译器把类型引用和类型本身视为同一个特征标
调用匹配函数时,不区分const和非const变量
函数模板:
函数定义时不指定具体的数据类型(使用虚拟类型代替)
函数被调用时编译器根据实参反推数类型-类型的参数化
//模板头与函数声明、定义永远是不可分割的整体!
template <typename 类型参数1,typename 类型参数2 ......>
返回值类型 函数名(形参类表){
// 在函数体中可以使用类型参数
}
//函数声明
template<typename T>
void Swap(T&,T&);
/**
* 使用模板技术实现变量交换值
*/
template<typename T>//模板头
void Swap(T &a, T &b)
{
T temp=a;
a=b;
b=temp;
}