默认参数指的是当函数调用中省略了实参时 自动使用一个默认的值。
对于带参数列表的函数,必须从右向左添加默认值 (就是说她的右边肯定是先有默认的值)
fun(int ,1,2,3) 不能 fun(int,1,int,int)等情况! 够清楚了吧!!
char* left(const char* str, int n=);
int main()
{
} char* left(const char* str, int n = )//错误
{
}
1 声明时带有默认参数,实现时没有默认值 (ok)
2 实现时带有默认参数,声明时没有默认值(ok)
char* left(const char* str, int n=);
int main()
{
} char* left(const char* str, int n )
{ }
char* left(const char* str, int n);
int main()
{ }
char* left(const char* str, int n = )
{ }
使用默认参数来替代函数重载:
如果一组重载函数(可能带有默认参数)都允许相同实參个数的调用,将会引起调用的二义性。
void func(int); //重载函数之一
void func(int,int=); //重载函数之二,带有默认参数
void func(int=,int=); //重载函数之三,带有默认参数 func(); //error: 到底调用3个重载函数中的哪个?
func(,) //error:到底调用后面2个重载函数的哪个?
小心小心!!!!!!!!!!!!!