积极答复者
高手请帮忙解释一下 参数缺省值 !!! 是怎么用的??什么意思??

问题
答案
-
没什么,所谓使用缺省值,就是为了函数调用方便。 函数声明时给参数赋一个默认值。最典型的,你可以看看CDialog。
class XXXDlg : public CDialog
{
// Construction
public:
XXXDlg(CWnd* pParent = NULL); // standard constructor
// 这个XXXDlg类的构造函数,有一个参数 CWnd* pParent 用来在构造时传入父窗体的指针,此时赋值为NULL,说明默认没有父窗体
}
实现:
XXXDlg::XXXDlg(CWnd* pParent /*=NULL*/) // 在实现时,不要再对参数赋值了,否则会导致编译器报错
: CDialog(CAdminActionDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
- 已标记为答案 adam90 2010年1月9日 1:38
-
怎么用和好处都被Michael说了。
我说一下注意吧
1 一个函数中可以声明多个默认参数,但是这些参数需要在函数参数的尾部。
比如:
void Func(int a, int b, int c =0, int d = 1);
而void Func(int a, int b =0, int c, int d);
是没有意义的。在调用该函数的时候,你无法使用默认参数b的值,而只给出a,c,d
2 参数的默认值是静态继承的。也就是说不要尝试在声明派生类继承的虚函数时,修改参数的默认值。
例如:
class A
{
public:virtual void Func(int a = 0){};
};
class B
{
public:
void Func(int a = 1){};
};
在调用时:
A* pA = new B;
pA->Func();
这时参数a的值为0而不是1。
麻烦把正确答案设为解答。- 已标记为答案 adam90 2010年1月9日 1:38
全部回复
-
没什么,所谓使用缺省值,就是为了函数调用方便。 函数声明时给参数赋一个默认值。最典型的,你可以看看CDialog。
class XXXDlg : public CDialog
{
// Construction
public:
XXXDlg(CWnd* pParent = NULL); // standard constructor
// 这个XXXDlg类的构造函数,有一个参数 CWnd* pParent 用来在构造时传入父窗体的指针,此时赋值为NULL,说明默认没有父窗体
}
实现:
XXXDlg::XXXDlg(CWnd* pParent /*=NULL*/) // 在实现时,不要再对参数赋值了,否则会导致编译器报错
: CDialog(CAdminActionDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
- 已标记为答案 adam90 2010年1月9日 1:38
-
怎么用和好处都被Michael说了。
我说一下注意吧
1 一个函数中可以声明多个默认参数,但是这些参数需要在函数参数的尾部。
比如:
void Func(int a, int b, int c =0, int d = 1);
而void Func(int a, int b =0, int c, int d);
是没有意义的。在调用该函数的时候,你无法使用默认参数b的值,而只给出a,c,d
2 参数的默认值是静态继承的。也就是说不要尝试在声明派生类继承的虚函数时,修改参数的默认值。
例如:
class A
{
public:virtual void Func(int a = 0){};
};
class B
{
public:
void Func(int a = 1){};
};
在调用时:
A* pA = new B;
pA->Func();
这时参数a的值为0而不是1。
麻烦把正确答案设为解答。- 已标记为答案 adam90 2010年1月9日 1:38