#include<iostream>
using namespace std;
/*
三 函数提高
3.3 函数重载
函数名可以相同以提高复用性
函数重载需满足的条件:
同意作用域下
函数名相同
函数参数类型不同/个数不同/顺序不同!!!
*/
void func(){
cout << "this is func" << endl;
}
void func(int a){
cout << "this is func(int a)" << endl;
}
void func(double a){
cout << "this is func(double a)" << endl;
}
void func(double a, int b){
cout << "this is func(double a, int b)" << endl;
}
void func(int a, double b){
cout << "this is func(int a, double b)" << endl;
}
/*
函数重载的注意事项
*/
// 1 函数返回值不可以作为函数重载的条件
/*
int func(int a, double b){ // 错误
cout << "this is func(int a, double b)" << endl;
return a;
}
*/
// 2 引用作为重载的条件
void func2(int & a){
cout << "func2(int & a)" << endl;
}
void func2(const int & a){
cout << "func2(const int & a)" << endl;
}
// 3 函数重载遇到默认参数
void func3(int a){
cout << "func3(int a)" << endl;
}
void func3(int a, int b=10){
cout << "func3(int a, int b=10)" << endl;
}
int main(){
func();
func(10);
func(1.1);
func(3.14, 100);
func(100, 3.14);
int a = 10;
func2(a); // func2(int & a)
func2(10); // func2(const int & a)
//func3(10); // func3(int a) 和 func3(int a, int b=10) 均可以被调用,出现二义性所以报错
func3(10, 20);
return 0;
}