函数重载及运算符重载在MFC中的应用

Eddy 发布于2011-4-19 18:19:58 分类: 程序设计 已浏览loading 网友评论0条 我要评论

在一个类的内部,使用最频繁的重载函数是类的构造函数。重载构造函数可以方便定义对象时用不同的方式来初始化对象。在父类与子类之间,多数情况是子类重载父类定义的虚函数,关于虚函数,后面会专门讲。

例如MFC的文件操作封装类CFile,它定义了3个构造函数。

CFile();/*创建一个CFile类对象,不关联任何文件。以后可以调用该对象的成员函数CFile::Open()打开指定文件*/
CFile( int hFile );/*构造类对象的同时,关联一个文件句柄。该句柄可以是由API函数OpenFile()返回的*/
CFile( LPCTSTR lpszFileName, UINT nOpenFlags );/*构造类对象的同时,以nOpenFlags指定的方式,打开由lpszFileName指定的文件*/

另外如绘图对象CBrush、Cpen等:

CBrush();//先构造类对象,以后再对刷子初始化(如调用CBrush::CreateSolidBrush()等)
CBrush(COLORREF crColor );//构造对象同时,为刷子指定颜色
CBrush(int nIndex, COLORREF crColor );//构造对象同时,为刷子指定影线风格和颜色
CBrush( CBitmap* pBitmap );//构造对象同时,为刷子指定位图

还有设备环境类CDC的成员函数SelectObject,重载版本也很多:

CPen* SelectObject( CPen* pPen );//笔
CBrush* SelectObject( CBrush* pBrush );//刷子
virtual CFont* SelectObject( CFont* pFont );//字体
CBitmap* SelectObject( CBitmap* pBitmap );//位图
int SelectObject( CRgn* pRgn );//区域

MFC中时间类(CTime)和字符串类(CString)等也有数学运算的特性,例如计算两个时间点的间隔,字符串之间的大小比较等。实现这些类的运算功能,最简洁最直观的方法莫过于重载运算符。

例如CTime类:

CTimeSpan operator-(CTime time) const;//计算两个时间点的间隔
CTime operator-(CTimeSpan timeSpan) const;//计算相差指定间隔的另一个时间点
CTime operator+(CTimeSpan timeSpan) const;const CTime& operator+=(CTimeSpan timeSpan);const CTime& operator-=(CTimeSpan timeSpan);BOOL operator==(CTime time) const;//比较两个时间点
BOOL operator!=(CTime time) const;
BOOL operator<(CTime time) const;
BOOL operator>(CTime time) const;
BOOL operator<=(CTime time) const;
BOOL operator>=(CTime time) const;

上述这些应用可以先大概了解下,无需深入去知道其含义,以后遇到再去深究!

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/761.html     欢迎订阅Eddy Blog

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言