VC++ 有关构造函数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 11:34:36
在以下三个构造函数中,分别有:
:mc_iNumber(nfield)
:CDialog(CDlgYG::IDD, pParent)
:CBaseTabCtrl(e_n)
我不明白它们是干什么用的。

CBaseTabCtrl::CBaseTabCtrl(int nfield)
:mc_iNumber(nfield)
{
this->m_statics=new CStatic[mc_iNumber];
this->m_edits=new CEdit[mc_iNumber];
m_list=new CListCtrl;
m_btn=new CButton[5];
}

CDlgYG::CDlgYG(CWnd* pParent /*=NULL*/)
: CDialog(CDlgYG::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgYG)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_tabYg=new CTabYG(8);
}

CTabYG::CTabYG(int e_n)
:CBaseTabCtrl(e_n)
{

}

就是在构造函数中初始化一些成员或基类,确保在进入构造函数之前先初始化这些成员或基类。
例如:
CBaseTabCtrl::CBaseTabCtrl(int nfield)
:mc_iNumber(nfield)
{
。。。。。
}
这里就是确保在进入构造函数CBaseTabCtrl之前,先用nfield初始化变量mc_iNumber。

CTabYG::CTabYG(int e_n)
:CBaseTabCtrl(e_n)
{

}
这里就是在进入构造函数CTabYG之前,先初始化基类CBaseTabCtrl,确保先进入基类的构造函数,再进入派生类的构造函数,而这是必须的。

初始化,用括号里面的值来初始化