关于深入浅出MFC里的this指针解释

时间:2022-07-14 05:46:10
#include<iostream>
using namespace std;
CMyWinApp *theApp;
 
class CWinApp
{
public:
CWinApp* m_pCurrentWinApp;
    CWinApp(){m_pCurrentWinApp=this;}
};
CWinApp* AfxGetApp()
{
return theApp.m_pCurrentWinApp;
}
class CMyWinApp:public CWinApp
{

};
int main()
{
CWinApp* pApp=AfxGetApp();
return 0;
}

 

从main开始 pApp=AfxGetApp();

AfxGetApp 就一个返回值return theApp.m_pCurrentWinApp

因为theApp是CMyWinApp对象指针

CMyWinApp 是CWinApp的派生类

又因为m_pCurrentWinApp 是CWinApp 的public 权限

public是公共函数 任何类都可以访问,派生类当然就能访问了

 

回到return theApp.m_pCurrentWinApp

 

这里因为返回一个CWinApp对象指针 会导致调用m_pCurrentWinApp对象的构造函数就到了

CWinApp(){m_pCurrentWinApp=this;}这个位置

 

所以this 指针是指向调用成员函数的对象指针theApp

 

这里相当于m_pCurrentWinApp=theApp

 

那么theApp是派生类指针 里面成员包含派生类和基类两部分

 

这里是把theAp的基类部分赋值到m_pCurrentWinApp指针

 

最后记住,全局对象的构造函数是在进入main之前就进行了