[c++]默认参数
2015-10-28 19:31
561 查看
=================默认参数==================
在函数声明时表明默认值,在函数定义时正常定义
void function(int a = 2)// 函数声明
void function(int a)//函数定义
{
//code....
}
具体规则
1.默认参数在声明中给出或者在定义中给出(默认参数可以放在函数声明或者定义中,但只能放在二者之一)
2.形参的参数名可以省略 例如 void function(int =2)
3.默认声明后不得再次尝试声明来试图更改默认值
4.函数的参数的默认值只能从后向前设置 出现非默认的参数后 左方不得再次出现默认的参数(如果某个参数是默认参数,那么它后面的参数必须都是默认参数) 例如
void fun(int a = 1, int b, int c = 3, int d = 4);
上述函数声明错误 原因是a 和 b 的位置错误
而
void fun(int a, int b = 2, int c = 3, int d = 4);
则是正确的
5.函数重载时谨慎使用默认参数值
代码示例
class Test
{
public:
int func(int a)
{
return a;
}
int func(int a, int b = 1)
{
return a + b;
}
} ;
如果有这样的调用:
int main(void)
{
Test test;
int result = test.func(1);
getchar() ;
return 0 ;
}
会造成函数调用的二义性,引发报错.
6.赋值规则:
右边的使用默认了 左边才能使用默认值
7.重载还是使用默认参数?
一般来说如果函数的两个版本工作方式完全相同 使用默认参数
若果参数决定了的函数的工作方式截然不同 使用重载
在函数声明时表明默认值,在函数定义时正常定义
void function(int a = 2)// 函数声明
void function(int a)//函数定义
{
//code....
}
具体规则
1.默认参数在声明中给出或者在定义中给出(默认参数可以放在函数声明或者定义中,但只能放在二者之一)
2.形参的参数名可以省略 例如 void function(int =2)
3.默认声明后不得再次尝试声明来试图更改默认值
4.函数的参数的默认值只能从后向前设置 出现非默认的参数后 左方不得再次出现默认的参数(如果某个参数是默认参数,那么它后面的参数必须都是默认参数) 例如
void fun(int a = 1, int b, int c = 3, int d = 4);
上述函数声明错误 原因是a 和 b 的位置错误
而
void fun(int a, int b = 2, int c = 3, int d = 4);
则是正确的
5.函数重载时谨慎使用默认参数值
代码示例
class Test
{
public:
int func(int a)
{
return a;
}
int func(int a, int b = 1)
{
return a + b;
}
} ;
如果有这样的调用:
int main(void)
{
Test test;
int result = test.func(1);
getchar() ;
return 0 ;
}
会造成函数调用的二义性,引发报错.
6.赋值规则:
右边的使用默认了 左边才能使用默认值
7.重载还是使用默认参数?
一般来说如果函数的两个版本工作方式完全相同 使用默认参数
若果参数决定了的函数的工作方式截然不同 使用重载
相关文章推荐
- C++_4种强制类型转换
- c++中dll介绍(详细)
- C++11学习笔记4---lambda表达式
- 确保线程执行函数体正确使用引用传递
- C++11 lambda 表达式解析
- C语言基础-分支结构
- C++ STL queue化繁为简介绍
- C++编程 (三)--- 深入C++后台开发
- c语言短信猫开发代码
- 1028 C语言文法
- C语言文法阅读与理解
- c语言文法分析
- c语言文法
- Effective C++笔记(一)
- 在c语言中自定义了一个函数,在main中调用时提示找不到标识符
- 如何禁止类的拷贝构造函数和复制构造函数
- c++11 线程同步信号的使用
- 非纯c++模式实现ogre1.9的Android版
- C语言文法
- 日志库EasyLogging++学习系列(7)—— 记录方式详解