隐藏main()函数,使用一个全局对象的成员函数替代main()函数的功能

来源:互联网 发布:如何学java高级工程师 编辑:程序博客网 时间:2024/06/05 00:38

前言

          此文在《程序入口函数(main或WinMain)放置在.h文件中,你试过吗?》基础上进一步尝试,在代码中隐藏main()函数,采用一个全局对象的成员函数替代main()函数的功能。实现使用了C++语言。


实现

/////////////////////////////////////////////////////////// file : MyMain.h// function : 为了实现面向对象的特性,采用CMyMain这个基本//            类来构建一个简单的架构实现讲main()函数隐藏//            在这个头文件中。使用时只需从CMyMain派生一个//            子类,并实现 virtual MyMain()函数。//////////////////////////////////////////////////////////  #pragma onceclass CMyMain;CMyMain *_myMain;   //声明一个基类的变量,初始化在CMyMain派生类CAppMain中完成(运用了多态)int main( void );class CMyMain{public:   virtual int MyMain();    CMyMain();};CMyMain::CMyMain(){    }int CMyMain::MyMain(){    std::cout << "CMyMain::MyMian" << std::endl;    return 0;}//////////////////标准 main 函数//////////////////int main( void ){    //可以在此做很多初始化或特定化的代码     _myMain->MyMain();        //加入收尾工作的代码 return 0;}

/////////////////////////////////////  file : CAppMain.h//  function : 使用CMyMain类的派生类来实现更多的功能扩展///////////////////////////////////#pragma once #include "MyMain.h"class CAppMain : public CMyMain{public:    CAppMain();    int MyMain();};CAppMain::CAppMain(){    _myMain = this;}/*将virtual MyMain的实现放到测试代码TestMain.cpp中实现int CAppMain::MyMain()*/

///////////////////////////////  file : TestMain.cpp//  Operation :测试//////////////////////////// #include <iostream>/////自定义头文件#include "CAppMain.h"  //"MyMain.h"被包含在其中//全局对象在入口函数mian( )之前构造 CAppMain theMain;     //最好用"双重锁定的单例模式"实现这个全局唯一的theMain对象//取代标准main函数的功能int CAppMain::MyMain(){    //所有程序的控制可以转到MyMain中进行    //    std::cout << "CAppMain::MyMain()" << std::endl;    return 0;}  

运行结果:

输出:  CAppMain::MyMain()


参考:

        1. 参考MFC的架构 -- 使用全局对象 theApp


1 0