前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【细品C++】缺省参数详解

【细品C++】缺省参数详解

作者头像
Crrrush
发布2023-06-23 14:36:59
2030
发布2023-06-23 14:36:59
举报

写在前面

本篇文章将向你介绍缺省参数,希望对你的C++学习有帮助。使用这种短文章的形式是希望读者朋友们尽可能读完。当然之后也会出一个类似总集篇的长文。

引入

在以前使用C语言时候,读者朋友们是否出现过这样的问题,写一个初始化函数,如果为这个函数设计参数传入初始化值,那么这个初始化函数的功能似乎与其他操控函数区别不是很大,而如果不设置参数,在函数内设置好初始化值,或者用设计好的宏来作为初始化值,的确解决了上一个问题,但这个初始化值的修改却又变麻烦了。得从代码层面去修改。而C++设计的缺省参数解决了这一痛点。

在这里插入图片描述
在这里插入图片描述

缺省参数概念

缺省函数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。

代码语言:javascript
复制
//代码演示
void func(int a = 0, int b = 1)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
}

int main()
{
	func();

	return 0;
}
在这里插入图片描述
在这里插入图片描述

缺省参数分类

全缺省参数

代码语言:javascript
复制
void func1(int a = 0, int b = 1, int c = 2)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}
在这里插入图片描述
在这里插入图片描述

半缺省参数

代码语言:javascript
复制
void func2(int a, int b = 1, int c = 2)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}
在这里插入图片描述
在这里插入图片描述

注意事项

除此之外,缺省函数还需注意:

半缺省函数必须从右往左依次给出,不能间隔着给。(为什么,想象一下,传参的时候编译器是否能辨别你传的参数到底是给谁的?)

缺省函数不能在函数声明和定义中同时出现。

代码语言:javascript
复制
//Function.h
void Print(int a = 1, int b = 2, int c = 3);

//Function.cpp
void Print(int a = 1, int b = 2, int c = 3)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}
//如果声明和定义位置同时出现缺省,并且恰巧提供的值不同,那编译器就无法判断该用哪个缺省值。
//所以编译器就默认声明定义分离时只在声明出进行缺省声明

缺省值必须是常量或者全局变量

C语言不支持(C编译器不支持)

结语

非常感谢读者朋友们能够读完本篇文章。不知这种短小的文章读起来体验如何,我在尽可能精简文章,让读者能按需索取,不浪费时间。如果你觉得做的还不错的话请点赞收藏加分享,当然如果发现我写的有错误或者有建议给我的话欢迎在评论区或者私信告诉我。

彩蛋

GitHub源码自取 文件名:缺省参数

gitee源码自取 文件名:缺省参数

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 引入
  • 缺省参数概念
  • 缺省参数分类
    • 全缺省参数
      • 半缺省参数
      • 注意事项
      • 结语
      • 彩蛋
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档