CDialogResize::CDialogResize(UINT uResource, CWnd* pParent)
: CDialog(uResource, pParent)
{
CommonConstruct();
}请问以上代码是不是先调用基类构造函数然后再调用派生类的构造函数?

解决方案 »

  1.   

    不管有没有加CDialog(uResource, pParent),都是先调用基类的构造函数,这里面加了CDialog(uResource, pParent),是代表子类变量对象实例化参数初始化父类拥有的成员变量(子类可以继承父类成员变量)!
      

  2.   

    explicit CDialog(
       LPCTSTR lpszTemplateName,
       CWnd* pParentWnd = NULL 
    );
    explicit CDialog(
       UINT nIDTemplate,
          CWnd* pParentWnd = NULL 
    );
    CDialog( );CDialog 有 3 个 构造函数
    如果你不特别声明,将调用默认构造函数,也就是第三个构造函数CDialogResize::CDialogResize(UINT uResource, CWnd* pParent) 
    : CDialog(uResource, pParent) 
    表明指定调用 CDialog 的第二个构造函数
      

  3.   

    在c++中,在某一个类构造之前它总是先看有没有父类,如果有它就会先构造父类,然后构造子类。建议楼主看看《深入浅出MFC》那本书,上面讲的很详细。