带默认参数的函数
来源:互联网 发布:贴片机编程技术视频 编辑:程序博客网 时间:2024/05/22 17:51
使用带默认参数的函数时要注意
1. 既可以在函数声明也可以在函数定义中指定默认实参。但是,在一个文件中,只能为一个形参指定默认实参一次。
2. 当函数定义和调用在同一个文件时,默认值需在调用前给出(声明或定义中都可以)。
详细如下:参考此文
(1) 既可以在函数声明也可以在函数定义中指定默认实参。但是,在一个文件中,只能为一个形参指定默认实参一次。函数最终的默认参数是声明和定义的合集。下面这样也是可以的,只是不推荐
int fun(int a,int b=5);int fun(int a=9,b){return a*b;}
(2) 当函数定义和调用在同一个文件时,如果函数的定义在函数调用之前,则应在函数定义中给出默认值,实际上此时的定义也是声明。如果函数的定义在函数调用之后,则在函数调用之前需要有函数声明,此时必须在函数声明中给出默认值,在函数定义时可以不给出默认值
(3) 对于类中的函数,一般在声明的时候给出默认值,否则的话只有在包含定义的文件里这个默认实参才会起作用
关于类中的默认值。请参考我的博客:http://blog.csdn.net/jenny_84/article/details/44780025
(4) 不能将实际值传递给引用类型的参数。可以将变量作引用类型参数的默认值,这时变量必须是已经声明且是全局变量。
声明函数时,要将类或结构中定义 的静态成员变量作为默认值,若该类或结构还未创建实例,那要在此静态成员变量前加上作用域操作符(::)。
若已声明了类或结构的实例,则引用其成员变量作为函数参数的默认值,就要在变量前加上实例名和成员操作符(.)。
(5) 对于非类中的函数,在函数声明中定义默认参数的另外一个好处时,可以利用局部声明来随意更改默认参数的值。
#include "stdafx.h"#include <iostream>using namespace std;int fglobal(int a,int b,int c){ cout<<a<< b <<c<<endl; return a;}int fglobal(int a,int b=2,int c=5); // 全局的申明int main(int argc, char* argv[]){ //fglobal(); //此时用的全局申明,无第一个参数不行 fglobal(1); int fglobal(int a=2,int b=3,int c=5); // 局部的申明,不管上述默认参数是在定义还是申明中 fglobal(); ::fglobal(3); // 此时将采用全局申明 return 0;}
//125
//235
//325
l
(6)一个函数不能既作为重载函数,又作为有默认参数的函数,应为当调用函数如果少写一个参数,系统无法判定是利用重载函数还是利用默认参数的函数,出现二义性。
如果有个函数既是重载又是默认参数函数,但是不产生二义性呢,比如作为默认参数函数有2种调用方式,但是都和作为重载的调用方式不一致,那就可以了
- 带默认参数的函数
- 带默认参数的函数 .
- 带默认参数的函数
- 带默认参数的函数
- 调用带默认参数的函数示例
- 带默认参数的虚函数
- 带默认参数的构造函数
- 12.C++ 带默认参数的函数
- C++带默认参数的函数
- 带默认参数的虚函数
- 函数的默认值+带默认参数的函数
- 函数的默认值与带默认参数的函数
- 带默认参数值的函数的简单理解
- C++使用带默认参数的构造函数
- c++作业,带默认参数的成员函数
- C++语言基础 例程 带默认参数的构造函数
- 带参数的构造函数及使用默认参数的构造函数
- 函数的默认参数
- ASPxGridViewExporter excel导出
- 【生活】程序员爱代码,而我爱你们
- UITextField监听文字输入事件
- 妙用html5的八大特性来开发移动webAPP
- 二维码的生成器。
- 带默认参数的函数
- template non-type parameter 非类型参数
- OVS学习总结---启动流程分析
- 3.3 Struts2的流程
- 东莞市盈辉汽车配件有限公司
- python-neutronclient架构分析
- UNIX socket编程(适用于iOS)
- Android之Android WebView常见问题及解决方案汇总
- dnsmasq服务