C++中的缺省参数

在C语言中,函数没有指定参数列表,默认可以接收任意多个参数,但在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为void,不接收任何参数。

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

来看一段简单的代码:

#include<iostream>
using namespace std;

void test(int a = 1)
{
    cout << a << endl;
}

int main()
{
    test();
    test(10);
    return 0;
}

在第一个test函数中,输出的结果是1,第二个test函数输出结果是10。

而缺省参数是分为两类的,一类是全缺省,一类是半缺省

同样用代码来演示一下:

首先是全缺省,全缺省参数所有参数都有默认值,如果没有手动传参,那么编译器会使用默认参数列表中的参数。但是这里值得注意的是,如果传参的时候只传了部分参数,那么该值会被从左至右匹配

#include<iostream>
using namespace std;

void test(int a = 1,int b = 2, int c = 3)
{
    cout << a << " " << b << " " << c << endl;
}

int main()
{
    test();
    test(10);
    test(10, 20);
    test(10, 20, 30);
    return 0;
}

运行结果如下:
这里写图片描述

半缺省参数代码演示:

void test(int a ,int b = 2, int c = 3)
{
    cout << a << " " << b << " " << c << endl;
}

void test1(int a, int b, int c = 3)
{
    cout << a << " " << b << " " << c << endl;
}

其中test函数至少传一个参数,test1函数至少传两个参数,函数才可以正常运行。

并且这里需要注意的是:
带缺省值的参数必须放在参数列表的最后面。因为传参是从右向左的。
缺省参数不能同时在函数声明和定义中出现,只能二者留其一。
缺省值必须是常量或者全局变量。
C语言并不支持缺省。

猜你喜欢

转载自blog.csdn.net/zym1348010959/article/details/80657736