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语言不支持缺省(编译器不支持)
以上是关于5)C++之缺省参数的主要内容,如果未能解决你的问题,请参考以下文章