在用C++设计一个应用程序时,总会使用应用程序实例类来管理所有事情,也就是说所有应用程序实例对象只有一个,并且保存这个应用程序所有状态,跟踪这个应用程序的变化。在第二人生里,也毫无例外地采用这种方案,现在就来分析一下应用程序实例类。它们的继承关系如下:
在文件llapp.h里定义类class LLApp,
在文件llappviewer.h里定义类class LLAppViewer : public LLApp,
在文件llappviewerwin32.h定义类class LLAppViewerWin32 : public LLAppViewer。
通过浏览这三个头文件,就可以看到应用程序类的继承关系,这样设计可以灵活地适应不同的平台,又达到复用代码的目的。在Windows里是使用LLAppViewerWin32类,它是使用在Win32平台的封装。
如果是Linux平台,它就会使用到下面的类:
class LLAppViewerLinux : public LLAppViewer
这样就可适用于不同的平台运行和编译,又达到代码复用目的。
下面接着来分析类LLApp的几个重要函数:
#001//
#002// Main application logic
#003//
#004virtual bool init() = 0; // Override to do application initialization
#005
#006//
#007// cleanup()
#008//
#009// It's currently assumed that the cleanup() method will only get
#010// called from the main thread or the error handling thread, as it will
#011// likely do thread shutdown, among other things.
#012//
#013virtual bool cleanup() = 0; // Override to do application cleanup
#014
#015//
#016// mainLoop()
#017//
#018// Runs the application main loop.It's assumed that when you exit
#019// this method, the application is in one of the cleanup states, either QUITTING or ERROR
#020//
#021virtual bool mainLoop() = 0; // Override for the application main loop.Needs to at least gracefully notice the QUITTING state and exit.
#022
init()函数是用来进行应用程序初始化的功能。
cleanup()函数是清除创建的资源。
mainLoop()函数是主线程消息循环处理。
可以看到上面三个函数都是纯虚函数,因此全是接口的声明,所有的功能是在派生类里实现的。在使用这个类时,只需要调用相同的接口就可以适应不同的平台,不同的实现了,这样的过程就叫做面向对象的编程。在团队里不同开发人员之间,可以不用相互理解各个怎么样实现,只需要了解接口的功能,就可以了,这样也达到协同开发的目的。
分享到:
相关推荐
网上收集的第二人生源码分析资料,感谢原创作者的无私支持!原作者就是CSDN的资深。。。
二层二站电梯程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例二层二站电梯程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例二层二站电梯程序.zip三菱PLC编程案例源码资料...
二用一备恒压供水程序及图纸.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例二用一备恒压供水程序及图纸.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例二用一备恒压供水程序及图纸...
PLC S7-200程序实例--程控喷泉程序.rar plc200例子.rar S200配料程序.rar s7 200例子程序.rar s7 200做的转盘的程序,6个工位.rar S7 Array and Indirect Addressing Examples and Basics.zip s7-200 modbus主、从站...
Android 应用程序开发 教材源码,里面实例全部经过验证,都可以直接运行。
电梯2层二站实例.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例电梯2层二站实例.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例电梯2层二站实例.zip三菱PLC编程案例源码资料编程...
FX PLC程序 二用一备恒压供水程序及图纸.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例FX PLC程序 二用一备恒压供水程序及图纸.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例FX ...
第二讲 DX9简单框架程序实例 源码
负一正二式车库程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例负一正二式车库程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例负一正二式车库程序.zip三菱PLC编程案例源码...
2轴二分之一切程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例2轴二分之一切程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例2轴二分之一切程序.zip三菱PLC编程案例源码...
fx2n电梯2层二站实例.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例fx2n电梯2层二站实例.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例fx2n电梯2层二站实例.zip三菱PLC编程案例...
二分频梯形图.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例二分频梯形图.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例二分频梯形图.zip三菱PLC编程案例源码资料编程控制器应用...
墨西哥纬创二期工程.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例墨西哥纬创二期工程.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例墨西哥纬创二期工程.zip三菱PLC编程案例源码...
第三章 Win32应用程序设计 第四章 基于对话框的应用程序 第五章 响应用户命令 第六章 使用Windows标准控件 第七章 使用ActiveX控件 第八章 文档/视结构 第九章 图形设备接口 第十章 MFC通用类 第十一章 ...
变频恒压供水一拖二.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例变频恒压供水一拖二.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例变频恒压供水一拖二.zip三菱PLC编程案例源码...
恒压供水程序一拖二+1台小泵.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例恒压供水程序一拖二+1台小泵.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例恒压供水程序一拖二+1台小泵...
ExtJS源码分析与开发实例宝典第二部分
HID汽车氙气灯二次夹封机.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例HID汽车氙气灯二次夹封机.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例HID汽车氙气灯二次夹封机.zip三菱...
51单片机C语言应用程序设计实例精讲教材