请问一个关于C++类的全局对象析构的有关问题,认真回答了就给分

请教一个关于C++类的全局对象析构的问题,认真回答了就给分
#include   <iostream>
using   namespace   std;

class   CObject
{
public:
CObject(){cout < < "CObject   Constructor! " < <endl;}
~CObject(){cout < < "CObject   Destructor! " < <endl;}
};
class   CCmdTarget:public   CObject
{
public:
CCmdTarget(){cout < < "CCmdTarget   Constructor! " < <endl;}
~CCmdTarget(){cout < < "CCmdTarget   Destructor! " < <endl;}
};
class   CWinThread:public   CCmdTarget
{
public:
CWinThread(){cout < < "CWinThread   Constructor! " < <endl;}
~CWinThread(){cout < < "CWinThread   Destructor! " < <endl;}
};
class   CWinApp:public   CWinThread
{
public:
CWinApp(){cout < < "CWinApp   Constructor! " < <endl;}
~CWinApp(){cout < < "CWinApp   Destructor! " < <endl;}
};
class   CWnd:public   CWinThread
{
public:
CWnd(){cout < < "CWnd   Constructor! " < <endl;}
~CWnd(){cout < < "CWnd   Destructor! " < <endl;}
};
class   CFrameWnd:public   CWnd
{
public:
CFrameWnd(){cout < < "CFrameWnd   Constructor! " < <endl;}
~CFrameWnd(){cout < < "CFrameWnd   Destructor! " < <endl;}
};
////////////////////////////////////////////////
class   CMyFrameWnd:public   CFrameWnd
{
public:
CMyFrameWnd(){cout < < "CMyFrameWnd   Constructor! " < <endl;}
~CMyFrameWnd(){cout < < "CMyFrameWnd   Destructor! " < <endl;}
};
class   CMyWinApp:public   CWinApp
{
public:
CMyWinApp(){cout < < "CMyWinApp   Constructor! " < <endl;}
~CMyWinApp(){cout < < "CMyWinApp   Destructor! " < <endl;}
};

CMyWinApp   theApp;   //这里定义一个全局变量

void   main()
{

cout < < "Running   in   main " < <endl;
return;
}

这个成立在main函数前定义了一个CMyWinApp的全局变量,程序运行后为什么CMyWinApp以及它的父类的析构函数都不执行呢?他们的构造函数都是执行了的啊。。。为什么?请知道的讲解一下,请详细一点。

------解决方案--------------------
这是VC的类析构顺序的不同导致的。其实cout本身就是一个类。我的意思是说:全局对象在调用 main之前初始化, 在退出main之后析构。这话没错。问题是cout对象在theApp之前析构。如果你把 CMyWinApp(){cout < < "CMyWinApp Constructor! " < <endl;}
~CMyWinApp(){cout < < "CMyWinApp Destructor! " < <endl;}
换为
CMyWinApp(){printf( "CMyWinApp Constructor!\n ");}
~CMyWinApp(){printf( "CMyWinApp Destructor!\n ");}

相信你会看到~CMyWinApp()函数执行。当然前面要加上#include <stdio.h>