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