函数高级
1、函数默认参数
在c++中,函数的形参列表中的形参是可以有默认值的 语法:返回值类型 函数名(参数=默认值){ }
注意事项:
1、如果函数的形参列表某个位置有了默认值,那么从这往右的参数都必须有默认值 2、如果函数声明有默认参数,函数实现就不能有默认参数,声明和实现只能有一个有默认值参数
#include<iostream>
using namespace std;
#include <string>
int func(int a, int b=20, int c=30)
{
return a + b + c;
}
int func02(int a = 10, int b = 20);
int func02(int a = 10, int b = 20)
{
return a + b;
}
int main() {
cout << func(10, 20) << endl;
system("pause");
return 0;
}
2、函数占位参数
c++中形参列表可以有占位参数,用来做占位,调用函数时必须填补该位置; 占位参数还可以有默认参数; 语法:返回值类型 函数名(数据类型){ }
#include<iostream>
using namespace std;
#include <string>
void func(int a,int=10)
{
cout << "this is a func" << endl;
}
int main() {
func(10,10);
system("pause");
return 0;
}
输出:
this is a func
请按任意键继续. . .
3、函数的重载
3.1 函数重载概述
作用:函数名可以相同,提高复用性
#include<iostream>
using namespace std;
#include <string>
void func()
{
cout << "func finishing..." << endl;
}
void func(int a)
{
cout << "func(int a) finishing..." << endl;
}
void func(double a)
{
cout << "func(double a) finishing..." << endl;
}
void func(double a,int b)
{
cout << "func(double a,int b) finishing..." << endl;
}
void func(int b,double a)
{
cout << "func(int b,double a) finishing..." << endl;
}
int main() {
func();
func(10);
func(3.14);
func(3.14, 10);
func(10, 3.14);
system("pause");
return 0;
}
输出:
func finishing...
func(int a) finishing...
func(double a) finishing...
func(double a,int b) finishing...
func(int b,double a) finishing...
请按任意键继续. . .
3.2 函数重载注意事项
引用作为重载条件; 函数重载遇到函数默认参数;
#include<iostream>
using namespace std;
#include <string>
void func(int& a)
{
cout << "func(int& a)finishing..." << endl;
}
void func(const int& a)
{
cout << "func(const int& a)finishing..." << endl;
}
void func02(int a,int b=10)
{
cout << "func02(int a,int b)ini.." << endl;
}
void func02(int a)
{
cout << "func02(int a)ini.." << endl;
}
int main() {
int a = 10;
func(a);
func(20);
func02(10);
system("pause");
return 0;
}
|