下面是第3章 关键技术仿真的第二个例子
//------------------------------------------------------------------
// main
//------------------------------------------------------------------
void main()
{CWinApp* pApp = AfxGetApp();pApp->InitApplication();
pApp->InitInstance();
pApp->Run();//其中pApp指向theApp全局对象
}
//-----书上说
pApp->InitApplication();调用的是CWinApp::InitApplication
pApp->InitInstance();调用的是CMyWinApp::InitInstance(因为CMyWinApp改写了他)
pApp->Run();//调用的是CWinAPP::Run
这是为什么啊?为什么因为被改写就是调用的派生类的函数呢?

解决方案 »

  1.   

    pApp在一开始到底是只向哪,是不是指向/CWinApp这个类???
      

  2.   

    因为InitInstance是virtual function。
    这是多态的问题,看看C++的书吧
      

  3.   

    虚拟函数的原因呀。
    说明你没有把《MFC深入浅出》的C++几大关键技术看明白,再重头看一遍吧。
      

  4.   

    pApp一开始指向你的CWinApp派生类的全局对象指针
      

  5.   

    是不是AfxGetApp()函数返回的是一个CMyWinApp类的指针?
    如果上式成立根据虚拟函数的规则则InitInstance是调用的CMyWinApp的!
      

  6.   

    你需要看一些C++的书
    我一直认为《MFC深入浅出》不适合初学使用,很多东西会把人搞糊涂了。偶到现在都一直没买,虽然VC已经搞了四年了
      

  7.   

    我认为InitInstance()是一个虚函数,是c++的多态性的事例,你看看c++书的多态性一章,你就明白了!
      

  8.   

    大家告诉我pApp指向哪??其他我自己去看书
      

  9.   

    pApp指向CMyWinApp的实例,这个实例是由AfxGetApp();返回的,这里有一个类型转换。
      

  10.   

    pApp指向的对象是你的CMyWinApp但他的类型是CWinApp道理是CMyWinApp也是一个CWinApp,所以我可以用CWinApp类型的指针来指向一个CMyWinApp的对象。C++知识要扎实。
      

  11.   

    虚函数,多态不懂C++的基础知识,看《深入浅出MFC》没有用的!先看C++ Primer吧,基础打牢,提升快快!