下面是个CDialog派生类的构造函数:
CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent ):CDialog(nIDTemplate, pParent)
{
...
}
这个函数该怎么理解,先是运行哪个函数呢?

解决方案 »

  1.   

    构造函数有此语法:
    CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent ):CDialog(nIDTemplate, pParent)
    {
    ...
    }
    相当于CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent )
    {
    CDialog(nIDTemplate, pParent);
    ...
    }
      

  2.   

    CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent ):CDialog(nIDTemplate, pParent)
    {
    ...
    }
    是一个关于构造CMyDlg对象的过程语法.
    其首先运行CDialog(nIDTemplate, pParent)并将结果作为CMyDlg的父类
    然后运行构造函数体.但,似乎并不是相当于
    CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent )
    {
    CDialog(nIDTemplate, pParent);
    ...
    }因为,没有指明"父子关系".
      

  3.   

    在如下函数中
    CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent ):CDialog(nIDTemplate, pParent)
    {
    ...
    }CDialog(nIDTemplate, pParent)的两个参数怎么理解,是在CMyDlg中定义的,还是在
    CDialog中的定义的
      

  4.   

    uhlan(uhlan):
         CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent ):CDialog(nIDTemplate, pParent)
         {
             ...
         }
             是一个关于构造CMyDlg对象的过程语法.
             其首先运行CDialog(nIDTemplate, pParent)并将结果作为CMyDlg的父类
             然后运行构造函数体.
         你的上面一句我同意,但是,下面的东东,我不敢苟同.
      
       但,似乎并不是相当于
       CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent )
       {  
         CDialog(nIDTemplate, pParent);
         ...
        }
           因为,没有指明"父子关系".    你这一句的 理由是没有指明"父子关系".我 觉得不是的,在这里因该是一种隐式的父子关系,
    他没有显式说明而已.我认为叶子的话是正确的.
      

  5.   

    在如下函数中
    CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent ):CDialog(nIDTemplate, pParent)
    {
    ...
    }CDialog(nIDTemplate, pParent)的两个参数怎么理解,是在CMyDlg中定义的,还是在
    CDialog中的定义的
    是在CDialog中定义的,子类的构造函数不过是在传递给父类构造函数参数而已.
      

  6.   

    构造函数有此语法:
    CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent ):CDialog(nIDTemplate, pParent)
    {
    ...
    }
    相当于CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent )
    {
    CDialog(nIDTemplate, pParent);
    ...
    }*********************************************************
    按照叶子朋友的说法,我试了一下,编译是通过了,但无法执行,看来理解成
    CMyDlg::CMyDlg(UINT nIDTemplate,CWnd* pParent )
    {
    CDialog(nIDTemplate, pParent);
    ...
    }
    还是有问题的,请高手门指点一下这个函数是如何工作的。