C++中 缺省参数

it2024-07-08  43

1.概念:缺省参数是函数在声明或者定义时为函数指定一个默认值。在调用该函数时,如果没有指定实参则使用其默认值,否则使用指定的实参。

#include <iostream> using namespace std; void Print(int num) { cout<<num<<endl; } int main() { Print();//没有传参数,使用默认值 Print(10);//进行了传参,使用指定的实参 return 0; }

2.缺省参数的分类 (1)全缺省参数 顾名思义是在函数声明或定义时,其函数的所有参数都有一个默认值 函数传参规则:在传递参数时,是从左到右依次传递

#include <iostream> using namespace std; void Print(int left=1,int right=2) { cout<<"left="<<left<<endl; cout<<"right="<<right<<endl; } int main() { Print();//没有传递实参,使用默认值 Print(10);//10传递给第一个参数,后面一个参数使用默认值 Print(10,20);//使用指定实参,没有使用默认值 return 0; }

(2)半缺省参数 (2.1)概念:顾名思义是函数的部分参数带有默认值

#include<iostream> using namespace std; void Print(int left,int mid=2,int right=3) { cout<<"left="<<left<<endl; cout<<"mid="<<mid<<endl; cout<<"right="<<right<<endl; } int main() { Print(1); Print(1,4); return 0; }

(2.2)半缺省参数规则

#include <iostream> using namespace std; //第一个参数不带默认值,后面两个带默认值,代码可以通过编译 void Print(int left,int mid=2,int right=3) { cout<<"left="<<left<<endl; cout<<"mid="<<mid<<endl; cout<<"right="<<right<<endl; } int main() { return 0; } #include <iostream> using namespace std; //第一个参数带默认值,第二个参数不带默认值,第三个参数带默认值,代码不可以通过编译,编译报错 void Print(int left=1,int mid,int right=3) { cout<<"left="<<left<<endl; cout<<"mid="<<mid<<endl; cout<<"right="<<right<<endl; } int main() { return 0; }

#include <iostream> using namespace std; //第一个参数带默认值,第二个参数带默认值,第三个参数不带默认值,代码不可以通过编译,编译报错 void Print(int left=1,int mid=2,int right) { cout<<"left="<<left<<endl; cout<<"mid="<<mid<<endl; cout<<"right="<<right<<endl; } int main() { return 0; }

#include <iostream> using namespace std; //第一个参数不带默认值,第二个参数不带默认值,第三个参数带默认值,代码可以通过编译 void Print(int left,int mid,int right=3) { cout<<"left="<<left<<endl; cout<<"mid="<<mid<<endl; cout<<"right="<<right<<endl; } int main() { return 0; }

结论:带缺省参数只能在不带缺省参数的右边(半缺省参数只能从右往左依次给出,不能有间隔)

3.注意 (1)缺省参数不能在函数声明和定义中同时出现,若同时出现,当其默认值给的不同时,编译器不知道该使用哪个缺省值,建议在函数声名中给出。 (2)缺省值必须是常量或者全局变量

#include <iostream> #include <Windows.h> using namespace std; int a=1;//为全局变量时 void Print(int num=a) { cout<<"num="<<num<<endl; } int main() { Print(); system("pause"); return 0; } #include <iostream> #include <Windows.h> using namespace std; //缺省值为局部变量时,会编译报错 void Test() { int a=2; } void Print(int num=a) { cout<<"num="<<num<<endl; } int main() { Print(); system("pause"); return 0; }

(3)C语言不支持

最新回复(0)