刚看深入浅出MFC的第三章Frame1的例子,当用构造函数构造一个派生类时,为何会调用它的基类的构造函数呢,最好有人参照书上Frame1的例子给详细说明一下啦,谢谢

解决方案 »

  1.   

    MFC中的类层次结构是以下面的方式依次派生的:
    CObject
    CCmdTarget
    CWinThread
    CWinApp
    CMyWinApp其实每一个子类的实例里都包含父类的部分和自身的部分,所以在创建子类时要先创建父类的部分,
    而析构正好相反,所以上面在生成CMyWinApp的构造函数时,要先成成CWinApp,而生成CWinApp
    之前要先生成CWinThread,依此类推,所以最先够造CObject,最后构造CMyWinApp.
    正如候杰先生所说的,"勿在浮沙筑高台",先研究一下C++ primer
      

  2.   

    恩 ,这是因为子类自然是父类的一种,它们是 has-a的关系,子类自然也包含了父类的数据,一般是先初始化父类的数据,然后再初始化子类的数据,整个子类对象就可以完全初始化了。