帮忙解释一段C++代码

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:51:56
网上搜的代码,谁能帮忙解释一下?
//app.h
#pragma once
namespace app
{
class App;
static App* _theApp = 0;
static HINSTANCE Instance = 0;
static LPTSTR CmdLine = 0;
static int CmdShow = 0;
class App
{
public:
App::App()
{
if(_theApp)
{
//只能有一个App实例,否则抛出异常.
#ifdef UNICODE
::MessageBox(0,L"App类在一个应用程序中只能有一个实例,应用程序自动退出",L"警告!",MB_ICONERROR);
#else
::MessageBox(0,"App类在一个应用程序中只能有一个实例,应用程序自动退出","警告!",MB_ICONERROR);
#endif
::ExitProcess(0);
}
else _theApp = this;
}
virtual int InitApp() = 0;
};
}
int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
{
app::Instance = hInstance;
app::CmdLine = lpCmdLine;
app::CmdShow = nCmdShow;
return app::_theApp->InitApp();
}
//main.cpp
#include "w

程序执行的顺序应该是首先初始化全局MyApp类变量theApp,theApp的构造函数为空,调用theApp父类的构造函数App::App().
然后进入程序入口函数int APIENTRY _tWinMain(),顺序执行对App命名空间内的几个变量赋值,然后调用MyApp的initApp()函数,程序结束.

太复杂了