带有继承的单个类的构造函数的正确语法

时间:2018-06-19 17:54:19

标签: constructor mfc

这里有两种方法来声明构造函数。

版本1

CAssignHistoryDlg::CAssignHistoryDlg(CWnd* pParent /*=NULL*/)
    : CResizingDialog(_T("SMHistory"), CAssignHistoryDlg::IDD, pParent, false)
    , m_pCombo(nullptr)
    , m_pStrText(nullptr)
    , m_pGrid(nullptr)
    , m_bBuildTreeMode(false)
    , m_bFirstSelChangeEvent(false)
    , m_iLookIn(LOOKIN_THEME_AND_METHOD) // AJT v10.7.0
    , m_bFullHistoryMode(false)
    , m_pHistoryOriginal(nullptr)
{

}

版本2

CAssignHistoryDlg::CAssignHistoryDlg(CWnd* pParent /*=NULL*/)
    : m_pCombo(nullptr)
    , m_pStrText(nullptr)
    , m_pGrid(nullptr)
    , m_bBuildTreeMode(false)
    , m_bFirstSelChangeEvent(false)
    , m_iLookIn(LOOKIN_THEME_AND_METHOD) // AJT v10.7.0
    , m_bFullHistoryMode(false)
    , m_pHistoryOriginal(nullptr)
    , CResizingDialog(_T("SMHistory"), CAssignHistoryDlg::IDD, pParent, false)

{

}

唯一的区别是基本构造函数调用的位置。是否有规定应指定哪种方式的规则?有关系吗?

我不是在这里要求“意见”。如果可能的话,只是事实答复。

1 个答案:

答案 0 :(得分:1)

没有关系,但是基类构造函数总是在任何成员类初始化完成之前执行。

我将基类构造函数始终放在列表的顶部。因为从我的角度来看,它更具可读性。

即使类成员初始化也不按照构造函数中编写的顺序进行。它们按照类中的声明顺序进行初始化。