c++中实参个数与形参个数不同

2024-11-28 09:15:58
推荐回答(3个)
回答1:

如果定义是DWORD SetCheck(int nCheck, BOOL bRepaint);编译不能通过的.
但是有一种情况:
这样定义DWORD SetCheck(int nCheck, BOOL bRepaint=FALSE);这样就可以了,表示如果调用时不添bRepaint项就默认FALSE.
这个在MFC的内置函数中很常见.
///////////////////////////////////
大部分bRepaint的都有提供默认的值定义, 你可以进去看下函数定义
给个win32测试的例子:
#include
void abc(int a, int b=1);

void abc(int a, int b)
{
printf("%d\n", a);
printf("%d\n", b);
}

int main()
{
abc(2);
return 0;
}
编译通过,打印结果
2
1

#include
void abc(int a, int b);

void abc(int a, int b)
{
printf("%d\n", a);
printf("%d\n", b);
}

int main()
{
abc(2);
return 0;
}
编译不通过

回答2:

声明时,给形参加个缺省值.
如:DWORD CButtonST::SetCheck(int nCheck, BOOL bRepaint = TRUE) ;

回答3:

那一定是重载了该函数,另外一个同名的函数只有一个参数