首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++默认参数有关问题

2012-02-21 
c++默认参数问题C/C++ code#include iostream#include stringusing namespace std/******* 书上说如

c++默认参数问题

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, "", "") 

热点排行