使用应用程序类的优点是什么?
What are advantages of using application class?
我见过很多c++代码使用类似这样的应用程序类:
class MyApplication : Application {
private:
int privateVariable;
public:
void run() {
run...
}
~MyApplication() {
cleanup...
}
}
int main() {
MyApplication app;
app.run();
}
代替:
int main() {
int variable;
run...
cleanup...
}
使用应用程序类的优点是什么?我能想到的一个是,我不需要将每个变量作为函数参数传递(因此很容易提取函数)。还有其他优点或缺点吗?什么时候推荐这种款式?
我试着搜索这个,但是我找不到。如有任何建议,我将不胜感激。
至少有三件事。
-
可能有几个应用程序类,在像
这样的层次结构中AbstractApplication GUIApplication ServerApplication ConsoleApplication
在这里使用OOP和继承是很自然的,有很多共享代码,不需要关心应用程序对象的确切类型。共享代码通常是事件循环(在run方法中),因为这类应用程序通常是事件驱动的。
-
事件处理程序和其他回调可以通过在应用程序类中根据需要重写虚拟保护方法来轻松实现:
class MyApplication : Application { // ... protected: void someEvent(Event *event) { if (event->type()==Application::InterestingEvent) { // Do something about it } else { // just pass the event to super class implementation Application::someEvent(event); } } }
这里回调只需要定义一次,在Application对象的子类中,它就可以工作了。使用其他实现方法,框架开发人员可能需要保留一个单独的回调表(现在由对象的虚函数表负责),并且应用程序开发人员需要添加一个单独的回调注册。
-
清理是由RAII干净而确定地处理的。您不需要关心应用程序对象的确切类型,因为它自己知道,编译器会处理它。
相关文章:
- 谁能告诉我,程序中的错误是什么?该程序仅用于获取文件扩展名
- 是什么将程序集转换为实际可执行的材料
- 应用程序仅在安装了 Visual Studio 的 PC 上启动.这种行为的原因可能是什么
- 是什么导致程序在我继续执行另一个功能之前停止
- 有什么理由更喜欢从 IDE 中运行应用程序而不是运行独立的可执行文件?
- 开发C++应用程序,目标服务器有不同的std lib版本,最佳实践是什么
- 将大量数据从C 应用程序传递到SQLServer存储过程的最快方法是什么?
- 一般来说,使用Qt Creator,是什么导致程序在调试模式下编译时正确运行,但在发布模式下崩溃
- Qt for Android:Jni - 不幸的是,应用程序已停止
- 是什么使C++程序仅是 64 位或受机器限制
- 是什么使 C/C++ 程序成为 32/64 位
- 我如何知道一个项目是否是MFC应用程序
- 还原覆盖光标,而不是整个应用程序
- 什么是使应用程序具有CPU和GPU计算后端的最佳方法
- c++ (MFC,不是.net)应用程序的程序集重定向
- 最佳实践是将应用程序核心和gui分开编写
- 为什么LOAD DATA LOCAL INFILE会在CLI中工作,而不是在应用程序中工作
- 其中是MFC应用程序的退出函数
- 将Xaml文本框转换为double,但如何验证用户输入是double,而不是windows 8应用程序的c++中的字符串
- 什么是嵌入应用程序中的最佳HTML呈现引擎