1. The default function arguments
In C ++, the parameter list of the function parameter can have default values
grammar:返回值类型 函数名 (参数=默认值){}
note
If a location has been the default parameters, then from this position in the future, from left to right must have a default value
If you declare a function with default parameters, then the implementation of a function can not have default parameters
#include<iostream>
using namespace std;
//函数的默认参数
//如果我们自己传入数据,就用自己的数据,如果没有,那么用默认值
int func(int a, int b=20, int c=30){
return a+b+c;
}
//注意事项
//1. 如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值
//2. 如果函数的声明有了默认参数,那么函数的实现就不可以有默认参数
int main(){
cout<<func(10,30)<<endl;
return 0;
}
2. placeholder function parameter
C ++ function in the parameter list where you can have a placeholder parameters used for placeholder, it must call the function to fill the position
grammar:返回值类型 函数名(数据类型){}
#include<iostream>
using namespace std;
//占位参数
//占位参数 可以有默认参数
void func(int a, int = 10){
cout<<"this is func"<<endl;
}
int main(){
func(10);
return 0;
}
3. function overloading
3.1 Overview of function overloading
Role : function name can be the same, increase reusability
Function overloading satisfy the conditions :
- Under the same scope
- The same function name
- Function parameters of different types or a different number or a different order
Note : The return value as a function of the conditions can not be overloaded
#include<iostream>
using namespace std;
//函数重载
//可以让函数名相同,提高复用性
//函数重载的满足调价
//1.必须在同一个作用域下
//2.函数名称相同
//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;
}
//注意事项
//函数的返回值不可以做为函数重载的条件
int main(){
func();
func(10);
func(3.14);
return 0;
}
3.2 function overloading Notes
- As the overload condition cited
- Function overloading met default function arguments
#include<iostream>
using namespace std;
//函数重载的注意事项
//1.引用作为重载的条件
void func(int &a){
cout<<"this is func(int &a)"<<endl;
}
void func(const int &a){
cout<<"this is func(const int &a)"<<endl;
}
//2.函数重载碰到默认参数
void func2(int a, int b = 10){
cout<<"this is func2(int a)"<<endl;
}
void func2(int a){
cout<<"this is func2(int a)"<<endl;
}
int main(){
int a = 10;
func(a);
func(10);
func2(10); //报错,出现二义性
return 0;
}