c++默认参数有关问题
c++默认参数问题
上面代码应该报错,却能正确执行?
我的环境是vs2008
------解决方案--------------------
函数参数是从右往左这个顺序
lz 的代码没有问题
------解决方案--------------------
display必须要有一个参数,这个不能少;后面的参数如果不赋值就用缺省的默认参数
------解决方案--------------------
难道 lz 以为几个 s3 都是同一个不成
函数形参和实参是两回事
- C/C++ code
#include <iostream> #include <string> using namespace std; /*** **** 书上说如果一个默认参数需要指定一个特定值,则在其之前的所有参数都必须赋值。 ***** 那样的话,像Display(s3) 等这个的赋值是不对的,但却能正确执行。 ****/ void Display(string s1,string s2="",string s3=""); int main() { string s1 = "a",s2 = "b",s3 = "c"; Display(s1); Display(s1,s2,s3); Display(s3,s1); Display(s2,s3); Display(s3); Display(s2); } void Display(string s1,string s2,string s3) { if(s2 == "" && s3 == "") { cout << s1 << endl; } else if(s3 == "" && s2!= "") { cout << s1 << "," << s2 << endl; } else { cout << s1 << "," << s2 << "," << s3 << endl; } }
上面代码应该报错,却能正确执行?
我的环境是vs2008
------解决方案--------------------
函数参数是从右往左这个顺序
lz 的代码没有问题
------解决方案--------------------
display必须要有一个参数,这个不能少;后面的参数如果不赋值就用缺省的默认参数
------解决方案--------------------
难道 lz 以为几个 s3 都是同一个不成
函数形参和实参是两回事
- C/C++ code
Display(s3); // 这个调用的是 Display(s3, "", "")