#include “stdafx.h”
//#include <stdio.h>
#include
using namespace std;
class CommandBase
{
public:
//CommandBase(){};
//virtual ~CommandBase(){};
virtual void commandver(){};
virtual void commandhelp(){};
virtual void commandex(){};
};
class CommandList:public CommandBase
{
public:
//CommandList(){};
//virtual ~CommandList(){};
virtual void commandver()
{
cout<<“version\n”;
};
void commandhelp()
{
cout<<“help\n”;
};
void commandex()
{
cout<<“excute\n”;
};
};
class commandinvoker
{
public:
CommandBase *_comobj;
commandinvoker(CommandBase &comobj)
{
this->_comobj=&comobj;
};
void commandver()
{
_comobj->commandver();
};
void commandhelp()
{
_comobj->commandhelp();
};
void commandex()
{
_comobj->commandex();
};
};
int main(int argc, char* argv[])
{
CommandList comlist;
commandinvoker cominvoker(comlist);
cominvoker.commandver();
cominvoker.commandhelp();
cominvoker.commandex();
return 0;
}
总结:c++中多态的实现不但要有虚函数,继承类,更要使用指针或者引用才可实现,若使用类的值类型,则不可实现。