C++入门篇(三) 缺省参数

目录

一、概念

         二、分类

         三、声明和定义中的缺省参数

         四、缺省参数的使用场景

         五、总结 

         六、源代码 

                1.Test.h

                2.Test.cpp

                3.缺省参数.cpp


一、概念

       缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。
(简单的说就是:在设置了缺省值后,调用函数没有时如果没有传参就使用缺省值。)


二、分类

1.全缺省参数:(所有参数都设置了缺省值)

void funa(int a = 0, int b = 1, int c = 2)
{
	cout << a << ' ' << b << ' ' << c << endl;
}

2.半缺省参数:(部分参数都设置了缺省值) 

·半缺省只能从右往左连续设置缺省,中间不能有间隔。

void funb(int a  , int b = 1, int c = 2)//必须从右往左(<--)连续缺省,不能有间隔
{
	cout << a << ' ' << b << ' ' << c << endl;
}

eg. 从左往右设置缺省,会报错:

C++入门篇(三) 缺省参数_第1张图片


三、声明和定义中的缺省参数

1.缺省参数不能在声明和定义中同时出现:

 2. 缺省参数以声明为准:

  (声明中没有缺省参数,定义给了也没用。)

C++入门篇(三) 缺省参数_第2张图片

  3.以下例子说明:缺省参数以声明为准:


四、缺省参数的使用场景

场景一:顺序表,栈,队列的初始化
C++入门篇(三) 缺省参数_第3张图片
在这里使用缺省参数的好处是:
1.在知道容量的情况下可以传参给capacity指定容量,无需反复扩容浪费时间。
2.不传参就使用缺省参数,后续扩容就无需考虑capacity==0的问题。


五、总结 

1.半缺省只能从右往左连续设置缺省,中间不能有间隔。
2.即使设置了缺省值,在传参时,我们依旧只能从左往右逐个传,中间不能有间隔。
3.缺省参数以声明为准 。

要注意的是:

1. 缺省值必须是常量或全局变量。

2.C语言不支持缺省参数。

3.C++在调用参数时不支持Func(a, , )和Func( ,b, )这两种写法。


六、源代码 

1.Test.h

#include
using std::cin;
using std::cout;
using std::endl;
void func(int a = 0, int b = 1, int c = 2);

2.Test.cpp

#include"Test.h"
void func(int a, int b, int c)
{
	cout << a << ' ' << b << ' ' << c << endl;
}

 3.缺省参数.cpp

#include
#include "Test.h"
using std::cin;
using std::cout;
using std::endl;

//全缺省
void funa(int a = 0, int b = 1, int c = 2)
{
	cout << a << ' ' << b << ' ' << c << endl;
}
//半缺省
//void funb(int a = 0, int b = 1, int c)//错,设置缺省参数时只能从右往左设置
void funb(int a  , int b = 1, int c = 2)//必须从右往左(<--)连续缺省,不能有间隔
{
	cout << a << ' ' << b << ' ' << c << endl;
}

int main()
{
	int a = 1;
	funa(a);
	//funa(, b, );//错,传参时只能从左往右逐个传
	//funa(a, , );//错,C++不支持这种写法
	funb(a);
	func();

	return 0;
}

//缺省参数不能在声明和定义中同时出现。(担心出现声明和定义中缺省值不同的情况)
//缺省实参以声明为准(声明中没给缺省,定义中给了也没用)

//关键:
//1.半缺省只能从右往左连续设置缺省,中间不能有间隔
//2.在传参时,我们只能只能从左往右逐个传,中间不能有间隔
//3.缺省实参以声明为准

你可能感兴趣的:(C++,c++,1024程序员节)