class CWinApp:public CWinThread
{
    public:
        CWinApp* m_pCurrentWinApp;
    public:
        CWinApp::CWinApp(){m_pCurrentWinApp = this;cout<<"CWinApp Constructor\n";}
        CWinApp::~CWinApp(){cout<<"CWinApp Destructor\n";}
};class CMyWinApp:public CWinApp
{
    public:
        CMyWinApp::CMyWinApp(){cout<<"CMyWinApp Constructor\n";}
        CWinApp::~CMyWinApp(){cout<<"CMyWinApp Destructor\n";}
};CMyWinApp theApp;
CWinApp* AfxGetApp()
{
    return theApp.m_pCurrentWinApp;
}这是这两各类及一个函数的定义,可下面在用的时候我就看不懂了:void main()
{
    CWinApp* pApp=AfxGetApp();
}
    pApp是一个父类的指针,为什么却要指向一个子类的对象?而且AfxGetApp取出的对象好像也是固定不变的.这有什么有么?
    这是<<深入浅出MFC>>六大技术仿真之一中的一段,详见P90
    希望大家能教教我这个菜鸟.非常感谢.