不具备自动清除功能的窗口类 释放 (在网上看到 摘过来 哈哈)

 不具备自动清除功能的窗口类,一般在堆栈中创建或嵌入于其它c++对象中:

  所有标准的Windows控件类(如CStatic, CEdit, CListBox等等)

  由CWnd类直接派生出来的子窗口对象(如用户定制的控件)

  拆分窗口类(CSplitterWnd)

  缺省的控制条类(CControlBar的派生类)

  对话框类(CDialog)在堆栈上创建的模态对话框类

  所有的Windows通用对话框(除CFindReplaceDialog)

  由ClassWizard创建的对话框

  具有自动清除功能的窗口类,一般在堆中创建:

  主框架窗口类(直接或间接从CFrameWnd类派生)

  视图类(直接或间接从CView类派生)

  从某种程度上来说,MFC的"服务到家"使初学者有些找不着北.不过,不得不承认:MFC干的很漂亮!

  谈到这里,我们应该明白c++里一条重要的准则:用DestroyWindow清除窗口对象,不要用"delete".

  对于不具备自动清除功能的窗口类使用"delete"时,"delete"先调用析构函数里的DestroyWindow,由于在析构函数中,虚机制不起作用,这里只能调用本地版本(Cwnd类)DestroyWindow函数,显然这不是我们想要的.对于有自动清除功能的窗口类,好象问题更严重一点,前面提到了重载的PostNcDestroy已经含有了"delete this",这样c++对象就被释放了两次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值