delete object, inline所需的注意及一些杂想

MFC经常会遇到创建画刷的句子
CBrush* pBrush = new CBrush(RGB(0,0,0));
CBrush* pOldBrush = dc.SelectObject(brush);
//做点事情
dc.SelectObject(pOldBrush);
delete pBrush;
delete dc.SelectObject(pOldBrush);//危险~!!
windows只创建一个Brush也就是说,如果定义了多个画刷他们是使用得同一块内存。所以这个操作很危险。 可以考虑用有引用技术的boost::shared_ptr来定义这个指针。
用到inline一定要非常小心,特别是在类的构造函数极其简单的时候,如:
Class Caution {
public:
       Caution(){}
private:
       string title;
       int size;
};
这时候编译器会和我们一样选择这个构造函数为inline但是这是个很糟糕的现象,它会把变量的初始化全部放进去,所以导致效率反而下降了。
看Effective C++感觉其中的建议很好,赶紧记下来
成员变量最好都为private,protected其实是没有封装的
很欣赏其中的一句话,封装和怀孕很像,只有封装和不封装,而不存在半封装(protected)
既然要封装那就彻底一些,隐藏的东西越多,封装就越彻底,而可改变的空间就越大
 
MFC也不能过于依赖Class Wizard,比如说ON_COMMAND_RANGE和ON_UPDATE_COMMAND_UI_RANGE等这些RANGE宏Class Wizard里面都没有,这些在很多情况可以省去N多不必要的重复代码,而以select case代之。方便~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值