一、函数的默认参数
#include <iostream> using namespace std; int func(int a, int b = 10, int c = 10) { return a + b + c; } //1、如果某个位置参数有默认值,那么这个位置后边的参数,都要有默认值 //2、如果函数声明有默认值,函数实现的时候不能有默认参数 int func2(int a = 10, int b = 10); int func2(int a, int b) { return a + b; } int main() { int a = func(50, 50, 50); cout << "a =" << a << endl; int b = func(50); cout << "b =" << b << endl; cout << "func2不传参数\t" << func2() << endl; cout << "func2传一个参数\t" << func2(20) << endl; cout << "func2传两个参数\t" << func2(20, 20) << endl; return 0; }
a =150 b =70 func2不传参数 20 func2传一个参数 30 func2传两个参数 40
二、函数的占位参数
C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置
#include <iostream> using namespace std; //函数占位参数 void func(int a, int) { cout << "this is func" << endl; } //占位参数也可以有默认参数 void funcc(int a, int = 20) { cout << "this is func" << endl; } int main() { func(10, 10);//占位参数必须填补 return 0; }
三、函数的重载
作用: 函数名可以相同,提高复用性
函数重载满足条件:同一个作用域下,函数名称相同,函数参数类型不同 或者 个数不同 或者 顺序不同。
#include <iostream> using namespace std; //函数重载 提高函数复用性 void func() { cout << "func" << endl; } void func(int a) { cout << a << endl; } void func(string str, int a) { cout <<"func(string str, int a)\t"<< str <<" "<< a << endl; } void func(int a, string str) { cout <<"func(int a, string str)\t"<< a <<" " << str << endl; } int main() { func(10, "hi"); func("hi",10); return 0; }
func(int a, string str) 10 hi func(string str, int a) hi 10
#include <iostream> using namespace std; //函数重载 //1、引用作为重载条件 void func(int &a) { cout << "func(int &a)" << endl; } void func(const int &a) { cout << "func(const int &a)" << endl; } //2、函数重载碰到默认参数 //void func2(int a){ // cout<<"func2(int a)"<<endl; //} void func2(int a,int b=10){ cout<<"func2(int a,int b=10)"<<endl; } int main() { int a = 10; func(a); const int b = 10; func(b); func2(10); return 0; }
func(int &a) func(const int &a) func2(int a,int b=10)