class CMyDlg : public CDialog
{
public:
int m_nTestA, m_nTest;
afx_msg void OnBnClickedButton();
virtual BOOL OnInitDialog();
}BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog(); if (m_nTestA == 1)
m_nTest = 1; return TRUE;
}void CMyDlg::OnBnClickedButton()
{
CString str;
str.Format(L"m_nTest = %d, m_nTestA = %d", m_nTest, m_nTestA);
MessageBox(str);
// m_nTest, m_nTestA 会是多少? 我不理解,请指导.}
{
public:
int m_nTestA, m_nTest;
afx_msg void OnBnClickedButton();
virtual BOOL OnInitDialog();
}BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog(); if (m_nTestA == 1)
m_nTest = 1; return TRUE;
}void CMyDlg::OnBnClickedButton()
{
CString str;
str.Format(L"m_nTest = %d, m_nTestA = %d", m_nTest, m_nTestA);
MessageBox(str);
// m_nTest, m_nTestA 会是多少? 我不理解,请指导.}
// m_nTest, m_nTestA 会是多少? 我不理解,请指导.} m_nTestA 没初始化,是一个不固定的值,系统随机分配的内存块的值。
估计
m_nTest, m_nTestA 都不固定
m_nTest, m_nTestA 的最终值与它们的初值有关,先找到它们的初值,如果m_nTestA 当前值为1,m_nTest 就会被赋值为1,点击按钮后弹出的消息框中m_nTestA, m_nTest的值都为1,如果m_nTestA 当前值不为1,m_nTest的值不变,为当前值。
如果是在Debug版,应该是什么 0xCCCCCCCC如果是在Release版,可能是一个随机机因为 A 没有初值,不同的编译方法产生不同的初值
但是实际情况是: 类的成员变量m_Test, 它是一个固定值.(至少100次测)
如何理解这种情况?