#include<iostream>
using namespace std;//标注空间
#include<string>
#include<time.h>
#include<cstdlib>
//函数的提高1;函数的默认参数 函数 的形参可以有默认值! 返回类型 函数名 (参数=默认值){}
//原来形参是直接传入设置就行的 形参也是可以赋值的 !
//注意事项:1:如果某位已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值!!!!!(有默认参数之后的形参即都要有默认值!)
//2:如果函数的声明有了默认参数,那么函数的实行就不能有默认参数!!!!!
//int func2(int a=80, int b=90);//函数的声明-声明和实现只能有一个有默认参数!!!!!
//
//int func(int a,int b=20,int c=30) //设置默认值 //假设这个函数实行求和
//{
// return a + b + c;
//}
//
//int func2(int a, int b)//函数的实现
//{
// return a + b;
//}
//int main()
//{
// //cout << func(10, 20, 30) << endl;
// cout << func(10) << endl;//一样的!
// cout << func(10, 100) << endl;// !这个值如果传了就会用输入 形参 的值 !如果没输入及用 默认值!!!
//
// cout << func2(10,10) << endl;//满足注意情况下 还是可以赋值的
// system("pause");
// return 0;
//}
// 2:函数的占位参数:形参在列表当中可以有占位参数,用来占位,调用函数时必须填补该位子!!!!! :返回类型 函数名 (数据类型){}
//占位参数还可以有!默认参数!void func(int a,int=10){}//调用时可不用传值了!
//void func(int a,int)//第二个int 即起到占位用!!!!!在调用时必须传入相应的值!!!!!-目前还遇不到!占位参数!
//{
// cout << "调用该函数" << endl;
//
//}
//int main()
//{
// func(10,10);
// system("pause");
// return 0;
//}
//函数的重载:函数名可以相同,提高复用性:条件:1、同一个作用域下;2、函数名相同;3、函数参数类型不同! 或 !个数不同 或 !顺序不同!!!!!
//函数返回值 不 能 作为重载的条件!!!!!
//void func()
//{
// cout << "func的调用1" << endl;
//}
//void func(int a)//根据不同的传入参数类型,调用不同的函数模块!
//{
// cout << "func(int a)的调用2" << endl;
//}
//void func(double b)
//{
// cout << "func(double b)的调用3" << endl;
//}
//void func(int a, double b)// 参数顺序不同!
//{
// cout << "func(int a)4的调用" << endl;
// cout << "func(double b)4的调用" << endl;
//}
//void func(double a, int b)// 参数顺序不 同!
//{
// cout << "func(int a)5的调用" << endl;
// cout << "func(double b)5的调用" << endl;
//}
//int main()
//{
// func();//调用第一个
// func(10);//调用第二个
// func(3.14);//调用第三个
// func(10, 3.14);//调用第四个//顺序不同!!!!!
// func(3.14, 10);//调用第五个
// system("pause");
// return 0;
//}
//1、引用 作为函数重载的条件!
//void func(int &a)//int&a=10;这个是在常量区当中的 是不合规矩的 !
//{
// cout << "func(int &a)的调用" << endl;
//}
//void func(const int &a)//类型不同 const int a=10;加const相当于对代码做了临时优化 让a指向临时空间!
//{
// cout << "func(const int &a)的调用" << endl;
//}
//int main()
//{
// int a = 10;
// func(a);//因为a现在相当于是一个变量
// func(10);//调用10这个常量,
// system("pause");
// return 0;
//}
//2、函数重载碰到默认参数!
void func(int a,int b=90)
{
cout << "func(int a)的调用" << endl;
}
void func(int a)
{
cout << "func(int a)的调用" << endl;
}
int main()
{
func(10);//函数重载碰到默认参数 导致二异性的出现!!!!!
system("pause");
return 0;
}