设为首页 加入收藏

TOP

1.4 运算符重载在MFC中的应用举例
2013-10-07 00:17:34 来源: 作者: 【 】 浏览:58
Tags:1.4 运算 重载 MFC 应用 举例

1.4  运算符重载在MFC中的应用举例

有这样一些类,它们的抽象语义包含数学运算的特性,这样的类被称为值类型。典型的例子是那些数学对象的封装类,如MFC的CPoint(点)、CSize(坐标偏移量)、CRect(矩形)等。另外,时间类(CTime)和字符串类(CString)等也有数学运算的特性,例如计算两个时间点的间隔,字符串之间的大小比较等。实现这些类的运算功能,最简洁最直观的方法莫过于重载运算符。下面列举几个MFC定义的数值类的运算符重载函数。
 
CPoint类

//比较两个点是否相等
BOOL operator==(POINT point) const;  
BOOL operator!=(POINT point) const;
//偏移点的计算 
void operator+=(SIZE size);   
void operator-=(SIZE size);
void operator+=(POINT point);
void operator-=(POINT point);
CPoint operator+(SIZE size) const;
CPoint operator-(SIZE size) const;
CPoint operator-() const;
CPoint operator+(POINT point) const;
//计算两个点之间的坐标偏移量
CSize operator-(POINT point) const;
//偏移矩形的计算
CRect operator+(const RECT* lpRect) const;
CRect operator-(const RECT* lpRect) const;
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;

CString类(仅列举友元函数)
friend CString AFXAPI operator+(const CString& string1,
const CString& string2);//连接两个字符串
friend CString AFXAPI operator+(const CString& string, LPCTSTR lpsz);
friend CString AFXAPI operator+(LPCTSTR lpsz, const CString& string);
friend CString AFXAPI operator+(const CString&
string, TCHAR ch);//为字符串追加字符
friend CString AFXAPI operator+(TCHAR ch, const CString& string);
除了“+”、“-”、“*”、“/”以及比较操作等基本运算符外,插入运算符“<<”和提取运算符“>>”的重载也在MFC中频繁使用。例如,在类CDumpContext和CArchive中定义了大量的“<<”或“>>”运算符的重载版本。CDumpContext类重载各种数据类型的“<<”运算符,将这些数据(包括对象)输出到VC++(www.cppentry.com)编译器的调试窗口。文档类CArchive重载“<<”和“>>”运算符,分别用于在文件中存储对象状态和从文件中恢复对象状态。
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.2.3 将运算符重载为友元和成员.. 下一篇1.3 函数重载在MFC中的应用举例

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: