第一次用博客,第一篇随笔,就写今天遇到的一个问题吧。

  在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构。未在其他模式下测试。

class A
{
public:
A()
{
MessageBox(NULL,"A 构造", "A", MB_OK);
}
~A()
{
MessageBox(NULL,"A 析构", "A", MB_OK);//并不会显示对话框
}
}; class B
{
public:
B()
{
MessageBox(NULL,"B 构造", "B", MB_OK);
}
~B()
{
MessageBox(NULL,"B 析构", "B", MB_OK);//并不会显示对话框
}
};

  然后在对话框类中声明变量。

    A a;
B b;

  运行程序,会先出现"A 构造"对话框,后出现"B 构造"对话框。

  关闭程序,通过调试可以发现,先调用"B 析构"对话框,后调用"A 析构"对话框。但事实上这两个对话框并不会出现,可能是由于程序退出,MFC阻止了窗口弹出。

  重申结论:先声明的变量后析构,后声明的变量先析构。

  这在A和B有耦合关系的情况下,往往有用。比如,B中使用了A的成员,若A先析构了,而B的线程还未退出,有可能造成溢出,或对话框界面退出而进程未结束等情况。

最新文章

  1. 小型单文件NoSQL数据库SharpFileDB初步实现
  2. JS编码解码
  3. PHP生成器Generators
  4. HDU 1048
  5. URL、表单数据、IP等处理类
  6. 6种编写HTML和CSS的最有效的方法
  7. 浏览器因cookie设置HttpOnly标志引起的安全问题
  8. ​ScrollView、ListView嵌套
  9. 【BZOJ1791】【IOI2008】【基环树】island(status第一速度)
  10. 3分钟教你做一个iphone手机浏览器
  11. 对VC++6.0爱得深沉(三)静态库的制作与使用
  12. 2、Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)
  13. 垃圾回收机制(GC)
  14. Android服务——Service
  15. React Native之hellWord
  16. PostCSS 实战
  17. Flink学习(三)状态机制于容错机制,State与CheckPoint
  18. MyEclipse 修改项目部署路径
  19. LiveCharts文档-4基本绘图-1基本线条图
  20. Docker容器学习梳理 - 基础环境安装

热门文章

  1. webapi - 使用依赖注入
  2. 札记:android手势识别,MotionEvent
  3. 【WCF】使用“用户名/密码”验证的合理方法
  4. HTTPS简介
  5. H3 BPM初次安装常见错误详解1-4
  6. Win7安装MySQL-5.7.16过程
  7. 跟着老男孩教育学Python开发【第四篇】:模块
  8. ASP.NET Aries 4.0 开源发布:已完成基础功能优化重写
  9. 《深入理解Java虚拟机》类文件结构
  10. Nodejs之MEAN栈开发(七)---- 用Angular创建单页应用(下)