effective c++ 条款26 postpone variable definition as long as possible

因为构造和析构函数有开销,所以也许前面定义了,还没用函数就退出了。

所以比较好的方法是用到了才定义。

转载于:https://www.cnblogs.com/williamwood/p/3836914.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是在应用程序的主窗口类 `CMainFrame` 中的 `OnClose` 函数中执行的。让我逐行解释: - `BOOL fClose = TRUE;`:定义一个布尔变量 `fClose`,初始化为 `TRUE`,用于记录是否可以关闭窗口。 - `BOOL bidon;`:定义一个布尔变量 `bidon`,用于接收 `MDIGetActive` 函数的返回值。 - `CMyMDIChildWnd* pChildWnd;`:定义一个指向 `CMyMDIChildWnd` 类的指针变量 `pChildWnd`,用于遍历活动的 MDI 子窗口。 - `while ((pChildWnd = (CMyMDIChildWnd*) MDIGetActive(&bidon)) != 0)`:循环遍历活动的 MDI 子窗口,直到没有子窗口为止。`MDIGetActive` 函数返回活动的 MDI 子窗口,并将结果保存在 `pChildWnd` 中。 - `MDINext();`:将下一个 MDI 子窗口设置为活动窗口。 - `if (!pChildWnd->Close())`:调用子窗口的 `Close` 函数,如果关闭操作失败,则将 `fClose` 设置为 `FALSE`。 - `if (fClose)`:如果可以关闭窗口,则执行以下代码块: - `CRect wndRect; GetWindowRect(&wndRect);`:获取主窗口的位置和大小。 - `CDemoApp* pApp = (CDemoApp*) AfxGetApp();`:获取应用程序对象的指针。 - `pApp->WriteProfileInt("MainWindow", "Left", wndRect.left);`:将主窗口的左边位置写入配置文件。 - `pApp->WriteProfileInt("MainWindow", "Top", wndRect.top);`:将主窗口的上边位置写入配置文件。 - `pApp->WriteProfileInt("MainWindow", "Right", wndRect.right);`:将主窗口的右边位置写入配置文件。 - `pApp->WriteProfileInt("MainWindow", "Bottom", wndRect.bottom);`:将主窗口的下边位置写入配置文件。 - `CMDIFrameWnd::OnClose();`:关闭主窗口。 - `else`:如果不可以关闭窗口,则执行以下代码块: - `PostMessage(WM_NULL, 0, 0);`:发送一个空消息。 - `PostMessage(WM_CLOSE, 0, 0);`:发送一个关闭窗口的消息。 这段代码的作用是在关闭主窗口时,遍历所有活动的 MDI 子窗口,并依次调用子窗口的 `Close` 函数进行关闭操作。如果所有子窗口都成功关闭,则保存主窗口的位置和大小到配置文件,并关闭主窗口。如果有任何一个子窗口无法关闭,则延迟关闭操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值