C++分析研究  
C++
日历
<2014年1月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678
统计
  • 随笔 - 92
  • 文章 - 4
  • 评论 - 4
  • 引用 - 0

导航

常用链接

留言簿

随笔档案

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

  我们来谈一下重载C++标准库函数时候会发生什么样的问题呢?接下来会通过重载MFC的MessageBox让你知道不一样的MFC。

  一、messagebox的原始调用方法

  我们随便新建一个MFC的对话框工程,先给出两种messagebox的调用方法,如下所示:

  void CMy200Dlg::OnBnClickedButton1()

  {

  //1. 调用CMy200Dlg类基类CWnd的方法MessageBox

  MessageBox(_T("CWnd's method!"),_T("123!"),0);

  //2. 调用windows API的MessageBox function

  ::MessageBox(NULL,_T("API funtion!"),NULL,0);

  }

  二、CMy200Dlg类中对messagebox方法的重载

  下面来改造MessageBox这个函数,第1种是在CMy200Dlg这个类中重载

  //d:\My Documents\Visual Studio 2005\Projects\200\200\200Dlg.h

  class CMy200Dlg : public CDialog

  {

  public:

  int MessageBox();

  };

  //d:\My Documents\Visual Studio 2005\Projects\200\200\200Dlg.cpp

  int CMy200Dlg::MessageBox()

  {

  int a=0,b=1;

  return a+b;

  }

  void CMy200Dlg::OnBnClickedButton1()

  {

  //方法1. 调用CMy200Dlg类基类CWnd的方法MessageBox

  CWnd::MessageBox(_T("CWnd's method!"),_T("123!"),0);

  //方法2. 调用windows API的MessageBox function

  ::MessageBox(NULL,_T("API funtion!"),NULL,0);

  //方法3. 调用重载的MessageBox()

  MessageBox();

  }

  为什么1.中的MessageBox必须加上CWnd::限定符,因为在CMy200Dlg中重载了MessageBox后会对基类的函数进行覆盖,这个是必须要引起注意的。

  三、全局中对messagebox方法的重载

  下面继续来重载MessageBox这个函数,第2种是在全局中进行重载

  int CMy200Dlg::MessageBox()

  {

  int a=0,b=1;

  return a+b;

  }

  int MessageBox(int aa,int bb)

  {

  return aa*bb;

  }

  void CMy200Dlg::OnBnClickedButton1()

  {

  //1. 调用CMy200Dlg类基类CWnd的方法MessageBox

  CWnd::MessageBox(_T("CWnd's method!"),_T("123!"),0);

  //2. 调用windows API的MessageBox function

  ::MessageBox(NULL,_T("API funtion!"),NULL,0);

  //3. 调用重载的MessageBox()

  MessageBox();

  //4. 调用重载的全局函数 MessageBox(int aa,int bb)

  ::MessageBox(20,14);

  }

  记住全局函数的调用加上::作用域符号就可以了。

  四、结论:

  一个知识点的灵活运用关键是勤动手,多调试,多去思考和总结。作为上一篇函数的重载就这样讲完了,但是子类对基类的覆盖这个概念没有展开来说,留给以后再去细说吧 www.yztrans.com  
 

posted on 2014-01-22 14:55 HAOSOLA 阅读(465) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © HAOSOLA Powered by: 博客园 模板提供:沪江博客
PK10开奖 PK10开奖