CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
CJXCRS_Client_V1Dlg::CJXCRS_Client_V1Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CJXCRS_Client_V1Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CJXCRS_Client_V1Dlg)
//}}AFX_DATA_INIT
}今天一个小妹妹突然问我这样的表达方式是什么意思?我是这样解释的:
CAboutDlg() 是类CAboutDlg的构造函数,CAboutDlg继承自CDialog。那
后面这个CDialog(CAboutDlg::IDD)怎么解释呢?既然是“:”就是类的
继承关系了,可CDialog(CAboutDlg::IDD)应该是类CDialog的构造函数啊?CSDN里关于CDialog的构造函数是这么说的:
CDialog(LPCSTR lpszTemplateName, CWnd* pParentWnd = NULL);
CDialog(UNIT nIDTemplate, CWnd * pParentWnd = NULL);参数: lpszTemplateName 包含一个对话框模板资源的空终止字符串。
nIDTemplate 包含对话框模板资源的ID号。
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
CJXCRS_Client_V1Dlg::CJXCRS_Client_V1Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CJXCRS_Client_V1Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CJXCRS_Client_V1Dlg)
//}}AFX_DATA_INIT
}今天一个小妹妹突然问我这样的表达方式是什么意思?我是这样解释的:
CAboutDlg() 是类CAboutDlg的构造函数,CAboutDlg继承自CDialog。那
后面这个CDialog(CAboutDlg::IDD)怎么解释呢?既然是“:”就是类的
继承关系了,可CDialog(CAboutDlg::IDD)应该是类CDialog的构造函数啊?CSDN里关于CDialog的构造函数是这么说的:
CDialog(LPCSTR lpszTemplateName, CWnd* pParentWnd = NULL);
CDialog(UNIT nIDTemplate, CWnd * pParentWnd = NULL);参数: lpszTemplateName 包含一个对话框模板资源的空终止字符串。
nIDTemplate 包含对话框模板资源的ID号。
调用基类的构造函数 ,默认是调用基类的默认构造函数
楼主还是先看C++基础再看VC吧
的意思是在自身构造函数执行前,指定调用父类的CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL)的构造函数
为了把一个或多个实参传递给成员类对象的构造函数我们通过成员初始化表来实现我
们也可以用成员初始化表来初始化非类的数据成员——见14.5 节的讨论例如
inline NameQuery::
NameQuery( const string &name )
: _name( name ), _present( false )
{}
为了向基类构造函数传递一个或多个参数我们也使用成员初始化表
c++primer
NameQuery( const string &name,
vector<location> *ploc )
: _name( name ),(baseclass) Query( *ploc ), _present( true )
{}
一般有四种情况需要使用成员初始化列表。
1, 当类含有const成员的时候
2, 当类含有引用成员的时候
3, 调用基类的带参数的构造函数,这是因为基类总是要先于子类构造,而初始化列表是在类构造之前的一个动作。
4, 调用一个带参数的成员对象的构造函数。这个原因是因为,成员变量也是先于对象构造函数的。
如class CAboutDlg : CDialog
{};
构造函数后面的:表示是类的初始化列表,即对象在构造的时候进行的初始化工作,一般第一个便是要调基类的构造函数于是便有了
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
},当然还可以跟更多的东西,如果有成员变量CString m_strName, m_strID
就可以
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
,m_strName(_T("Name"))
,m_strID(_T("123"))
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}