5)C++之缺省参数

Posted 流浪孤儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5)C++之缺省参数相关的知识,希望对你有一定的参考价值。

缺省参数概念

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

缺省的个人理解:缺少上级(你所在的省)的指导便干完了这件事

缺省参数的分类:

全缺省参数、半缺省参数

#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>  

//#include"Test.h"

using namespace std;

//全缺省参数

void TestFunc1(int a = 10, int b = 20, int c = 30)

{

    cout << "a = " << a << endl;

    cout << "b = " << b << endl;

    cout << "c = " << c << endl;

}

//半缺省参数

//这里必须从右往左依次缺省

void TestFunc2(int a, int b = 10, int c = 20)

{

    cout << "a = " << a << endl;

    cout << "b = " << b << endl;

    cout << "c = " << c << endl;

}

void TestFunc3(int c);

//void TestFunc3(int c=100){......}这样不行,会导致c重定义

//void TestFunc3(int c=1000){......}这样更不行,都不知道用那个值了

//void TestFunc3(){......}这样也不行,必须要有参数,因为声明是带了参数的

void TestFunc3(int c = 100)

{

    cout << "c = " << c << endl;

}

int main()

{

    //调用时必须从左到右依次传参

    cout << "TestFunc1() : " << endl;

    TestFunc1();

    cout << "TestFunc1(1) : " << endl;

    TestFunc1(1);

    cout << "TestFunc1(1,2) : " << endl;

    TestFunc1(1, 2);

    cout << "TestFunc1(1,2,3) : " << endl;

    TestFunc1(1, 2, 3);

    //TestFunc1(, , 3);//这样是不行的

    //不是缺省参数的a必须给值

    cout << "TestFunc2(1) : " << endl;

    TestFunc2(1);

    cout << "TestFunc2(1,2) : " << endl;

    TestFunc2(1, 2);

    cout << "TestFunc2(1,2,3) : " << endl;

    TestFunc2(1, 2, 3);

    cout << "TestFunc3() : " << endl;

    TestFunc3();

}

输出结果

注意:

1)半缺省参数必须从右往左依次来给出,不能间隔着给

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

#include<iostream> 

using namespace std;

void TestFunc3(int c = 100);//函数声明参数要给齐,不可以出现声明是缺省,定义又是缺省的情况

//当缺省参数出现在函数声明时,函数如何定义?

//void TestFunc3(int c=100){......}这样不行,会导致c重定义

//void TestFunc3(int c=1000){......}这样更不行,都不知道用那个值了

//void TestFunc3(){......}这样也不行,必须要有参数,因为声明是带了参数的

void TestFunc3(int c)//这样就可以了

{

    cout << "c = " << c << endl;

}

int main()

{

    TestFunc3();//输出100

      //把该函数的声明改为非缺省,函数的定义改为缺省也是可以的

}

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

4) C语言不支持缺省(编译器不支持)

6)C++之函数重载

以上是关于5)C++之缺省参数的主要内容,如果未能解决你的问题,请参考以下文章

c++之缺省函数函数重载

c++之缺省函数函数重载

c++之缺省函数函数重载

2-3:C++快速入门之缺省参数

C++缺省参数 + 函数重载

超详细的C++入门学习(命名空间,缺省参数,内联函数,函数重载等)