//baddude.h
#ifndef _BADDUDE_H
#define _BADDUDE_H
#include<cstdlib>
#include<ctime>
#include<string>
using namespace std;
class Person
{
private:
string fname;
string sname;
int number;
protected:
virtual void Draw()const;
virtual void Get();
public:
virtual void Show()const=0;
Person(): fname("none"),sname("none"),number(0){}
Person(const string& fn,const string & sn,int n):fname(fn),sname(sn),number(n){}
virtual~Person()=0;
virtual void Set()=0;
};
class PokerPlayer:public virtual Person
{
private:
int cnumber;
protected:
void Draw() const;
void Get() ;
public:
PokerPlayer():Person(),cnumber(0){}
PokerPlayer(const string& fn,const string & sn,int n,int cn):Person(fn,sn,n),cnumber(cn){};
PokerPlayer(const Person &per,int cn):Person(per),cnumber(cn){}
void Set();
void Show()const;
};
class Gunslinger:public virtual Person
{
private:
double time;
protected:
void Draw()const;
void Get();
public:
Gunslinger():Person(),time(0){}
Gunslinger(const string& fn,const string & sn,int n,double t):Person(fn,sn,n),time(t){}
Gunslinger(const Person &per,double t):Person(per),time(t){}
void Set();
void Show()const;
};
class BadDude :public PokerPlayer,public Gunslinger
{
protected:
void Draw()const;
void Get();
public:
BadDude(){};
BadDude(const string& fn,const string & sn,int n,double t,int cn):Person(fn,sn,n),PokerPlayer(fn,sn,n,cn),Gunslinger(fn,sn,n,t){}
BadDude(const Person &per,int cn,double t):Person(per),PokerPlayer(per,cn),Gunslinger(per,t){}
BadDude(const PokerPlayer &po, double t):Person(po),PokerPlayer(po),Gunslinger(po,t){}
BadDude(const Gunslinger &gu,int cn):Person(gu),PokerPlayer(gu,cn),Gunslinger(gu){}
void Set();
void Show()const;
};
#endif
//baddude.cpp
#include"baddude.h"
#include<iostream>
using namespace std;
Person::~Person(){}
void Person::Draw()const
{
cout<<"first name: "<<fname<<endl;
cout<<"second name: "<<sname<<endl;
cout<<"number: "<<number<<endl;
}
void Person::Get()
{
cout<<"enter first name: ";
getline(cin,fname);
cout<<"enter second name: ";
getline(cin,sname);
cout<<"number: ";
cin>>number;
}
void PokerPlayer::Draw()const
{
cout<<"card number: "<<cnumber<<endl;
}
void PokerPlayer::Get()
{
cout<<"enter card number: ";
std::srand(std::time(0));
cnumber=std::rand()%52+1;
}
void PokerPlayer ::Set()
{
Person::Get();
Get();
}
void PokerPlayer::Show()const
{
Person::Draw();
Draw();
}
void Gunslinger::Draw()const
{
cout<<"time: "<<time<<endl;
}
void Gunslinger::Get()
{
cout<<"enter time : ";
cin>>time;
}
void Gunslinger::Set()
{
Person::Get();
Get();
}
void Gunslinger::Show()const
{
Person::Draw();
Draw();
}
void BadDude ::Draw()const
{
Person::Draw();
PokerPlayer::Draw();
Gunslinger::Draw();
}
void BadDude::Get()
{
Person::Get();
PokerPlayer::Get();
Gunslinger::Get();
}
void BadDude::Set()
{
Get();
}
void BadDude::Show()const
{
Draw();
}
//maim.cpp
#include"baddude.h"
#include<cstdlib>
#include<ctime>
#include<string>
#include<iostream>
using namespace std;
const int SIZE =2;
int main()
{
Person * per[SIZE];
int ct;
for(ct =0;ct<SIZE;ct++)
{
char choice;
cout<<"enter the person category: \n"
<<"a: person b: pokerplayer "<<" c: gunslinger d: baddude";
cin>>choice;
while(strchr("bcdq",choice)==NULL)
{
cout<<"please enter b,c,d or q:";
cin>>choice;
}
if(choice =='q')
break;
switch(choice)
{
case 'b':per[ct]=new PokerPlayer;
break;
case'c':per[ct]=new Gunslinger;
break;
case'd': per[ct]=new BadDude;
break;
}
cin.get();
per[ct]->Set();
}
cout<<endl;
for(int i=0;i<ct;i++)
{
cout<<endl;
per[i]->Show();
}
for(int i=0;i<ct;i++)
delete per[i];
cout<<endl;
system("pause");
return 0;
}
14.4
最新推荐文章于 2024-10-02 11:30:00 发布