求c++函数参数缺省时的对应规则

来源:百度知道 编辑:UC知道 时间:2024/05/03 06:23:26
看书常为一些函数的参数头疼~~比如一个
函数原型:int GetMenuString(HMENU hMenu,UINT uIDItem,LPTSTR lpString,int nMaxCount,UINT uFlag);//该函数将指定菜单项的正文字符串拷贝到指定缓冲区。
下面 这 是 int i; CString str;
GetMenuString(i,str,MF_BYPOSITION);
中三个参数对应原型那些参数,如果用参数缺省时规则从右至左读,那i对应LPTSTR lpString,而LPTSTR lpString 在原型中是一个指针类型~~
请大侠帮忙指点下 在缺省参数的情况该怎么理解,用啥规则?
在缺省参数时,只能缺省最右边还是最左边的参数,该 咋理解~~~55

首先Win32 API是C的不是C++的,没有缺省参数。

缺省参数要在声明的时候写
int GetMenuString(HMENU hMenu,UINT uIDItem,LPTSTR lpString,int nMaxCount,UINT uFlag = 0);

这样你调用的时候如果不写最后一个参数,默认就用0

--

缺省的只能在最右边,但可以不只一个。只是如果你不写,编译器会给你加上默认值而已。

你这个调用不对啊。
缺省参数只能是最右边的几个参数,如果在调用时不写后面那几个参数,则编译器会自动认为你传入了那些默认参数。

函数的缺省参数即具有默认值的参数,如果某函数具有默认值的参数,那么最后一个默认值的参数的后面不能再有非默认值的参数,也即默认值的参数只能是最右边的参数。
下面的情况是正确的
void funtest(int i,int j,int k=20)
{
...
}

下面的情况是不能通过编译的
void funtest(int i,int n=10,int j,int k=20)
{
...
}