设为首页 加入收藏

TOP

1.3 函数重载在MFC中的应用举例
2013-10-07 00:17:32 来源: 作者: 【 】 浏览:66
Tags:1.3 函数 重载 MFC 应用 举例

1.3  函数重载在MFC中的应用举例

在一个类的内部,使用最频繁的重载函数是类的构造函数。因为类的构造函数一方面只能有一个名称(即类名),另一方面又要求它以多种形式构造,以便对不同的成员变量以不同的方式进行初始化。这样,为了给类的使用者以多种选择,就必然进行构造函数的重载。

例如MFC的文件操作封装类CFile,它定义了3个构造函数。如果需要先创建一个CFile类对象,以后再利用它打开一个文件;如果需要在构造CFile类对象的同时,将它与一个已经被打开的文件的句柄关联;如果需要在构造CFile类对象的同时,以某种方式打开一个指定的文件,在CFile类中都可以发现满足需要的构造函数。其构造函数声明如下:

CFile();/*创建一个CFile类对象,不关联任何文件。
以后可以调用该对象的成员函数CFile::Open()打开指定文件*/
CFile( int hFile );/*构造类对象的同时,关联一个文件句柄。
该句柄可以是由API函数OpenFile()返回的*/
CFile( LPCTSTR lpszFileName, UINT nOpenFlags );/*构造
类对象的同时,以nOpenFlags指定的方式,打开由lpszFileName指定的文件*/
又如绘图对象CBrush、CPen等,CBrush的构造函数如下:
CBrush();//先构造类对象,以后再对刷子初始化(如调用CBrush::CreateSolidBrush()等)
CBrush(COLORREF crColor );//构造对象同时,为刷子指定颜色
CBrush(int nIndex, COLORREF crColor );//构造对象同时,为刷子指定影线风格和颜色
CBrush( CBitmap* pBitmap );//构造对象同时,为刷子指定位图

除构造函数外,其他函数的重载也常使用。例如设备环境类CDC的成员函数Select Object(),可能是MFC中重载版本最多的一个。不同的SelectObject()重载版本将不同的GDI对象选择到设备上下文中。函数声明如下:
CPen* SelectObject( CPen* pPen );//笔
CBrush* SelectObject( CBrush* pBrush );//刷子
virtual CFont* SelectObject( CFont* pFont );//字体
CBitmap* SelectObject( CBitmap* pBitmap );//位图
int SelectObject( CRgn* pRgn );//区域
在父类与子类之间,多数情况是子类重载父类定义的虚拟函数。关于MFC应用虚拟函数的讨论,参见2.6节。
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.4 运算符重载在MFC中的应用举例 下一篇1.2.5 重载运算符的相关问题

评论

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