• 您的位置我爱Aspx >> VC.Net >> 非议MFC(三)库代码的质量问题
  • 非议MFC(三)库代码的质量问题

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:49:39  关键字:
  • 非议MFC(三)库代码的质量问题

    sp; 非议MFC(三)库代码的质量问题

    关键字:C++,MFC,RECT,CRect,POINT,CPoint,质量

    说明:程序片断仅包括理解所必需的代码,其余省略。

    每个人的代码都不可能完全排除质量隐患,但MFC作为库代码,对其质量怎么苛求都不会过分。

    1.只顾效率

    <WINDEF.H>

    typedef struct tagRECT

    {

    LONG left;

    LONG top;

    LONG right;

    LONG bottom;

    } RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;

    <AFXWIN.H>

    class CRect : public tagRECT

    {

    CPoint& TopLeft();

    CPoint& BottomRight();

    };

    <AFXWIN1.INL>

    _AFXWIN_INLINE CPoint& CRect::TopLeft()

    { return *((CPoint*)this); } 1]

    _AFXWIN_INLINE CPoint& CRect::BottomRight()

    { return *((CPoint*)this+1); } 2]

    TopLeft()通过返回CPoint &同时提供Set和Get功能,并且,返回CPoint &比返回CPoint效率高。但是,函数的实现必须依赖指针的跨越性转换(即从CRect *转换成完全不相干的CPoint *),另外,还要假设编译器是顺序存放各数据成员。随意转换指针类型,不安全;依赖编译器实现,不可移植;以后扩展时可维护性降低(如增加数据成员),还有可能导致错误(如引入虚函数时,有的编译器将虚表放在对象存储地址的前部)。

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:实战DeviceIoControl 之二:获取软盘/硬盘/光盘的参数
    下一篇:从WEB服务器下载文件的简单方法。
  • 相关文章