VS之多态虚函数的实现

来源:互联网 发布:安卓framework源码 编辑:程序博客网 时间:2024/06/10 02:58

本文简单地介绍下如何使用多态和虚函数实现程序的调用。

使用工具:VS2008

使用语言:C++

开发步骤:

1.新建对话框程序

2.添加基类,写一个虚函数

Person.h

#pragma onceclass CPerson{public:CPerson(void);~CPerson(void);public:virtual void Eat();};

Person.cpp

#include "StdAfx.h"#include "Person.h"CPerson::CPerson(void){}CPerson::~CPerson(void){}void CPerson::Eat(){AfxMessageBox(_T("有个人吃了些水果..."));}

3.添加派生类,重写虚函数

Old.h

#pragma once#include "person.h"class COld : public CPerson{public:COld(void);~COld(void);public:void Eat();};

Old.cpp

#include "StdAfx.h"#include "Old.h"COld::COld(void){}COld::~COld(void){}void COld::Eat(){AfxMessageBox(_T("年长者吃了些香蕉..."));}

Youth.h

#pragma once#include "person.h"class CYouth : public CPerson{public:CYouth(void);~CYouth(void);public:void Eat();};

Youth.cpp

#include "StdAfx.h"#include "Youth.h"CYouth::CYouth(void){}CYouth::~CYouth(void){}void CYouth::Eat(){AfxMessageBox(_T("年青人吃了些苹果..."));}

Child.h

#pragma once#include "person.h"class CChild : public CPerson{public:CChild(void);~CChild(void);public:void Eat();};

Child.cpp

#include "StdAfx.h"#include "Child.h"CChild::CChild(void){}CChild::~CChild(void){}void CChild::Eat(){AfxMessageBox(_T("小家伙吃了些葡萄..."));}

4.添加消息响应事件

VirtualFunctionDemoDlg.h

public:afx_msg void OnBnClickedBtnPerson();afx_msg void OnBnClickedBtnOld();afx_msg void OnBnClickedBtnYouth();afx_msg void OnBnClickedBtnChild();

VirtualFunctionDemoDlg.cpp

void CVirtualFunctionDemoDlg::OnBnClickedBtnPerson(){//Person COld CYouth CChildCPerson* pPerson = NULL;pPerson  = new CPerson;pPerson->Eat();}void CVirtualFunctionDemoDlg::OnBnClickedBtnOld(){CPerson* pPerson = NULL;pPerson  = new COld;pPerson->Eat();}void CVirtualFunctionDemoDlg::OnBnClickedBtnYouth(){CPerson* pPerson = NULL;pPerson  = new CYouth;pPerson->Eat();}void CVirtualFunctionDemoDlg::OnBnClickedBtnChild(){CPerson* pPerson = NULL;pPerson  = new CChild;pPerson->Eat();}

5.实现效果

对话框界面


点击基类指针按钮效果:person
 
点击派生类指针按钮效果:old

 

点击派生类指针按钮效果:youth

 

点击派生类指针按钮效果:child

 


好了,效果就演示到这儿了。


源码下载


1 0