C++ (带有默认参数的函数参数)缺省函数参数

缺省参数?
在C++中,允许实参的个数与形参的个数不同。在声明函数原型时,为一个或者多个形参指定默认值,以后调用这个函数时,若省略某一个实参,c++则自动的以默认值作为相应参数的值。

实列说明:
#include<iostream>
using namespace std;

int add(int x=4,int y=7)
{
return x+y;
}
int main()
{
cout<<add(3,6)<<endl;
cout<<add(3)<<endl;
cout<<add()<<endl;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
运行结果:

解析:
1、程序执行cout<<add(3,6)<<endl;语句时,因为函数add(3,6)传入了两个实参,与形参的个数一值,所以此时x=3,y=6。
2、程序执行cout<<add(3)<<endl;语句时,因为函数add(3)只传入了一个实参,与形参的个数不一值,所以此时先按从左到右的顺序将实参和形参相结合,所以x=3,又因为实参个数只有一个,于是另外一个形参取默认值,所以y=7。
3、程序执行cout<<add()<<endl;语句时,因为函数add()没有传入实参,所以此时所有的形参都取默认值,于是此时x=4,y=7。

注意:
1、指定默认值的参数必须放在形参列表中的最右端。 列如:

int func(int i,int j=5,int k);
1
这样是错误的。应该改为:

int func(int i,int k,int j=5);
1
2、在函数调用时,若个实参省略,则其后的所有实参都应该省略。不允许某个实参省略后,后面的实数再指定参数。 列如:

add(,7);
1
这是错误的。

3、只需要在函数声明和函数定义中一个给出默认值即可。
---------------------

原文地址:https://www.cnblogs.com/ly570/p/10954603.html

时间: 2024-10-23 14:53:55

C++ (带有默认参数的函数参数)缺省函数参数的相关文章

C++ 函数的缺省参数

一.普通函数的缺省参数 # include<iostream> using namespace std; void func(int m=0,int n=1) //m=0,叫做函数的默认参数,也叫做缺省参数.缺省参数可以有一个,也可以有多个. { cout<<"m:"<<m<<"\t"<<"n:"<<n<<endl; } int main() { func();

PHP_零基础学php_3PHP函数、传参函数、默认参数、函数返回值

<?php function say_hello() //无参数 { $name="tang"; echo "hello,".$name; echo "<br />"; echo "<hr />"; } say_hello();//函数调用 function say_helloS($some_name)//有参数 { echo "hello,".$some_name; echo

拷贝构造,深度拷贝,关于delete和default相关的操作,explicit,类赋初值,构造函数和析构函数,成员函数和内联函数,关于内存存储,默认参数,静态函数和普通函数,const函数,友元

 1.拷贝构造 //拷贝构造的规则,有两种方式实现初始化. //1.一个是通过在后面:a(x),b(y)的方式实现初始化. //2.第二种初始化的方式是直接在构造方法里面实现初始化. 案例如下: #include<iostream> //如果声明已经定义,边不会生成 class classA { private: int a; int b; public: //拷贝构造的规则,有两种方式实现初始化 //1.一个是通过在后面:a(x),b(y)的方式实现初始化 //2.第二种初始化的方式是直

C++ 虚函数的缺省参数问题

前些日子,有个同学问我一个关于虚函数的缺省参数问题.他是从某个论坛上看到的,但是自己没想通,便来找我.现在分享一下这个问题.先看一小段代码: #include <iostream> using namespace std; class A { public: virtual void Fun(int number = 10) { cout << "A::Fun with number " << number; } }; class B: public

不可或缺 Windows Native (16) - C++: 函数重载, 缺省参数, 内联函数, 函数模板

[源码下载] 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 函数重载 缺省参数 内联函数 函数模板 示例1.函数重载, 缺省参数CppFunction1.h #pragma once #include <string> using namespace std; namespace NativeDll { class CppFunction1 { public: string Demo(); }; } CppFunction1.cpp /* * 函数重载,缺省参数

C++ Primer 学习笔记_45_模板(三):缺省模板参数(借助标准模板容器deque实现Stack模板)、成员模板、关键字typename

一.缺省模板参数 1.stack内存能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下: template <typename T, typename CONT = std::deque<T> > //此处末尾必须有空格,否则编译出错 class Stack { - private: CONT c_; }; 如果没有传第二个参数,默认为deque 双端队列,当然我们也可以传递std::vector<T> 2.示例:借助

文件载入流程,函数的使用【函数名,参数【按引用赋值的问题】,函数体,【变量作用域和生命周期】】

1.求最大公约数辗转相除求值例如:12,8求最大公约数12%8=4[不为零]8%4=0[为零,则4为最大公约数][原理就是12,8的最大公约数和8,4的最大公约数一致][这个问题已经可被证明]计算机中最早的算法 2.文件载入---流程[php执行的先后顺序][php对代码的编译以文件为单位]先检查一个文件中的语法再进行编译然后才会一行行解释执行 [这一点需要注意]这里进行文件载入的流程讲解:php文件载入时,被引入的文件中的语法并不会解析,只有当该文件被执行[也就是被引入语句之后的部分才会报错]

getopt函数(分析命令行参数)

相关函数表头文件 #include<unistd.h>定义函数 int getopt(int argc,char * const argv[ ],const char * optstring);函数说明 getopt()用来分析命令行参数.参数argc和argv是由main()传递的参数个数和内容.参数optstring 则代表欲处理的选项字符串.此函数会返回在argv 中下一个的选项字母,此字母会对应参数optstring 中的字母.如果选项字符串里的字母后接着冒号“:”,则表示还有相关的参

速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

[源码下载] 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函数返回值 可变函数 匿名函数 闭包函数 回调函数 示例1.函数的相关知识点 1(基础)function/function1.php <?php /** * 函数的相关知识点 1(基础) */ // 可以在相关的 function 声明语句之前调用该函数 f1(); function f1() { echo "f1"; echo "<br />"; } // 这里调用

给函数传递不定关键字的参数 和

转载:http://blog.csdn.net/u012102306/article/details/52250050 收藏一下 在上一篇文章『[Python]给函数传递不定个数的参数』中,我们主要讲解了*在函数定义和函数调用阶段的不同作用,并留了一个小问题: 我们用*定义了add_int(*a)函数,现在有a_list=[1,2,3],那么我们调用add_int(*a_list)会产生什么效果呢? 如果文章你已看懂,那不难知道,最后被传到函数当中的a是(1,2,3),因为经历了先用*解压--把