C++中函数的默认参数
使用方法:
注意事项:
(1)一般在声明函数是设置默认参数。
如果在函数声明和定义函数时都设置了默认参数,则以函数声明的默认参数为准。
#include<iostream>
using namespace std;
int main()
{
double add(double a=3.2,double b=9.6);//在函数声明时设置默认参数
cout<<add()<<endl; //使用默认参数
return 0;
}
double add(double a=3.2,double b=9.5)//在定义函数时设置默认参数
{
return a+b;
}
运行结果:
(2)默认参数的定义顺序是自右向左。
即如果设置了一个缺省值,其右边的参数也应该设定一个缺省值。
即:
int add(int a,int b=1,int c=1);
这样做是正确的。
而:
int add(int a=1,int b,int c);
这样做是错误的。
这样做是因为实参传给系统之后,系统会自左向右与形参进行匹配。
如果函数时add(1,2),那么a=1,b=2,c等于多少呢?我们只有把参数全部传递过去之后,系统才能获得c的值,但这样做的话,为什么还要设置函数的默认参数呢?
所以编译系统不允许程序员这么做,因为这么做是毫无意义的。
(3)默认参数的调用顺序是自左向右。
我们在使用函数的时候,实参必须是由左自右书写的。
/*正确的用法*/
add(1,2,3);//传递三个参数的值
add(1,2);//传递两个参数的值
add(1);//传递一个参数的值
add();//不传递参数的值
/*错误的用法*/
add(,2,3);//不能省略掉左边的参数的值,应该右左向右传值
错误的提示:
C++中函数的默认参数的更多相关文章
- C++中函数的默认参数和C语言中volatile的学习
1.函数默认参数 1 int func(int a,int b=10) 2 { 3 return a*b; 4 } 5 6 int main() 7 { 8 int c=func(2); 9 cout ...
- python中函数的默认参数陷阱问题
其实也不能说是陷阱,只是一个不容易注意到的地方,尤其是有其他java/c++类编程语言经验的人员,这里涉及到python的一个特点,所以笔者说是陷阱只是一个噱头而已. def test(item, b ...
- c++中 函数的默认参数 学习
默认参数指的是当函数调用中省略了实参时 自动使用一个默认的值. 对于带参数列表的函数,必须从右向左添加默认值 (就是说她的右边肯定是先有默认的值) fun(int ,1,2,3) 不能 fu ...
- (转)python中函数参数中如果带有默认参数list的特殊情况
在python中函数参数中如果带有默认参数list遇到问题 先看一段代码 1 2 3 4 5 6 7 8 9 def f(x,l=[]): for i in range(x): ...
- C#函数的默认参数——填坑记
昨天踩了一个坑.默认参数 + 增量发布的坑. 过程是这样的. 1. 有一个底层的方法,格式形如 void Test<T>(int p1, string p2, Func<T> ...
- Swift函数_默认参数
swift中提供了默认参数功能,在声明函数时给参数指定默认值. 例: func inputStudentInfo(name:String,age:Int="26") { print ...
- python定义函数时默认参数注意事项
如果在调用一个函数时,没有传递默认参数,则函数内的默认参数是对函数的默认参数属性__defaults__的引用, 如 def func(arg1=[]): arg1.append(2) 调用func时 ...
- 对C++虚函数使用默认参数的注意事项
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/ 备忘一个关于虚函数的小知识点 使用多态调用一个类型中定义的虚函数时,编译器会根据指针的当前 ...
- JavaScript函数的默认参数(default parameter)
JavaScript函数的默认参数(default parameter) js函数参数的默认值都是undefined, ES5里,不支持直接在形参里写默认值.所以,要设置默认值,就要检测参数是否为un ...
随机推荐
- Android消息机制不完全解析(上)
Handler和Message是Android开发者常用的两个API,我一直对于它的内部实现比较好奇,所以用空闲的时间,阅读了一下他们的源码. 相关的Java Class: androi ...
- PHP Database ODBC 之 ODBC
ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数据库). 创建 ODBC ...
- 为啥NSString的属性要用copy而不用retain
之前学习生活中,知道NSString的属性要用copy而不用retain,可是不知道为啥,这两天我研究了一下,然后最终明确了. 详细原因是由于用copy比用retain安全,当是NSString的时候 ...
- mysql、sqlServer、hsql、oracle、db2各数据库支持的字段类型与最大精度
- Unity 3D 连接Mysql数据库
要想使用Unity直接连接数据库需要以下几个动态库
- 利用iptables将本地的80端口请求转发到8080,当前主机ip为192.168.1.1,命令怎么写?
iptables -t nat -A PREROUTING -d 192.168.1.1 -p tcp --dport 80 -j REDIRECT --to-port 8080 内网上外网: ipt ...
- 克隆虚拟机,如何将克隆虚拟的网卡设置为eth0
1.先删掉/etc/udev/rules.d/70-persistent-net.rules文件里的eth0,并要记住eth1的那个网卡的mac地址等下要用.2.把那个eth1修改为eth03.编辑网 ...
- 获取系统的IP
如何获取Linux系统的ip.当时一直用这种方法获取IP的. ifconfig|grep 'Bcast'|awk -F ':' '{print $2}'|awk '{print $1}' 今天偶然发现 ...
- cover letter issues
All cover letters should: Explain why you are sending a resume. Don't send a resume without a cover ...
- poj 01背包
首先我是按这篇文章来确定题目的. poj3624 Charm Bracelet 模板题 没有要求填满,所以初始化为0就行 #include<cstdio> #include<algo ...