【C++】缺省参数

缺省参数是为函数的参数指定一个缺省值,调用该函数时,如果没有指定实参则采用该形参的缺省值。

void Test(int a = 10) {
	cout << a << endl;
}

int main() {
	Test(); // 不传参默认10
	Test(100); // 指定传参100
	return 0;
}

缺省参数分为全缺省和半缺省。

  • 全缺省
void Test(int a = 10, int b = 20, int c = 30)
 {
     cout<<"a = "<<a<<endl;
     cout<<"b = "<<b<<endl;
     cout<<"c = "<<c<<endl;
 }
  • 半缺省
void Func(int a, int b = 10, int c = 20)
 {
     cout<<"a = "<<a<<endl;
     cout<<"b = "<<b<<endl;
     cout<<"c = "<<c<<endl;
 }

需要注意的是:

  1. C语言不支持缺省函数;
  2. 缺省值必须是常量或者全局变量;
  3. 缺省参数不能在函数声明和定义中同时出现,这是因为可能在声明和定义中给的缺省值不一样,编译器无法选择使用哪一个缺省值,所以缺省值在声明或定义中任意一处给即可;以下是错误示范:
//a.h
void Func(int a = 10);

// a.cpp
void Func(int a = 20)
{
	// ...
}
  1. 半缺省参数必须从右至左依次给出,不能中间有某个参数没有缺省值,这是因为这种函数没办法调用。以下是错误示范:
void Func(int a, int b = 10, int c, int d = 20)
 {
     cout<<"a = "<<a<<endl;
     cout<<"b = "<<b<<endl;
     cout<<"c = "<<c<<endl;
     cout<<"d = "<<d<<endl;
 }
Func(25); // 不能调用,因为形参c没有值 

而如果是正确的半缺省,只要传了至少一个参数,怎样调用都可以:

void Func(int a, int b = 10, int c = 15, int d = 20)
 {
     cout<<"a = "<<a<<endl;
     cout<<"b = "<<b<<endl;
     cout<<"c = "<<c<<endl;
     cout<<"d = "<<d<<endl;
 }
Func(5);
Func(5, 25);
Func(5, 25, 30);
Func(5, 25, 30, 40);

相关推荐

  1. C++】参数

    2024-03-26 20:00:02       19 阅读
  2. C++基础】参数

    2024-03-26 20:00:02       11 阅读
  3. C++中函数的默认参数参数

    2024-03-26 20:00:02       36 阅读
  4. 1、命名空间、C++的复合类型、参数

    2024-03-26 20:00:02       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-26 20:00:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-26 20:00:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-26 20:00:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-26 20:00:02       20 阅读

热门阅读

  1. AI大模型学习

    2024-03-26 20:00:02       15 阅读
  2. 【NC16622】多项式输出

    2024-03-26 20:00:02       16 阅读
  3. Flask 继学习 之 py与js文件的关系和通信

    2024-03-26 20:00:02       16 阅读
  4. 鸿蒙开发(第三部分)二

    2024-03-26 20:00:02       15 阅读
  5. 短剧小程序系统开发搭建短剧付费系统

    2024-03-26 20:00:02       19 阅读
  6. 为wordpress特定分类目录下的内容添加自定义字段

    2024-03-26 20:00:02       19 阅读
  7. webpack-loader详解

    2024-03-26 20:00:02       16 阅读
  8. 数据结构奇妙旅程之深入解析冒泡排序

    2024-03-26 20:00:02       17 阅读
  9. 低代码与供应链行业的融合:开启数字化新时代

    2024-03-26 20:00:02       22 阅读