程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> MFC中成員變量的聲明順序與析構順序,mfc成員變量聲明

MFC中成員變量的聲明順序與析構順序,mfc成員變量聲明

編輯:C++入門知識

MFC中成員變量的聲明順序與析構順序,mfc成員變量聲明


  第一次用博客,第一篇隨筆,就寫今天遇到的一個問題吧。

  在VS2008的MFC對話框程序,窗口成員變量的聲明順序與其析構順序相反,即,先聲明的變量後析構,後聲明的變量先析構。未在其他模式下測試。

class A
{
public:
    A()
    {
        MessageBox(NULL,"A 構造", "A", MB_OK);
    }
    ~A()
    {
        MessageBox(NULL,"A 析構", "A", MB_OK);//並不會顯示對話框
    }
};

class B
{
public:
    B()
    {
        MessageBox(NULL,"B 構造", "B", MB_OK);
    }
    ~B()
    {
        MessageBox(NULL,"B 析構", "B", MB_OK);//並不會顯示對話框
    }
};

  然後在對話框類中聲明變量。

    A a;
    B b;

  運行程序,會先出現"A 構造"對話框,後出現"B 構造"對話框。

  關閉程序,通過調試可以發現,先調用"B 析構"對話框,後調用"A 析構"對話框。但事實上這兩個對話框並不會出現,可能是由於程序退出,MFC阻止了窗口彈出。

 

  重申結論:先聲明的變量後析構,後聲明的變量先析構。

  這在A和B有耦合關系的情況下,往往有用。比如,B中使用了A的成員,若A先析構了,而B的線程還未退出,有可能造成溢出,或對話框界面退出而進程未結束等情況。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved