再读C++ Primer 写了个小例子(08-01-16)

实现了几个类的继承操作 ,
#pragma  once
#include 
" employee.h "

class  Developer :
    
public  Employee
{
public:
    Developer(
void);
    
~Developer(void);
    Developer(
int iTimeInJob);
    Developer(Developer
& dev);
//    Developer(char* plname,char* plid,char* pljt,int iTimeInJob);
    Developer::Developer(char* plname,char* plid,char* pljt,int iTimeInJob) :
   Employee(plname,plid,pljt)
    
{
        TimeInJob 
= iTimeInJob;
    }

    
int GetTimeInJob();
    
void Show();
    
void Job();
protected:
    
int TimeInJob;
}
;


#pragma  once
using   namespace  std;

class  Employee
{
public:
    Employee(
void);
    
~Employee(void);
    Employee(
char* plname,char* plid,char* pljt); 
    
virtual  void Job()
    
{
//        Employee::show()
        cout<<"I'm Employee"<<endl;
    }

    
char* GetName();
    
char* GetId();
    
char* GetJoinTime();
    
void Show();
protected:
    
char Name[20];
    
char ID[8];
    
char JoinTime[16];
}
;


#pragma  once
#include 
" employee.h "
#include 
" Developer.h "

class  Leader :
    
public  Employee
{
public:
    Leader(
void);
    Leader(
char* plname,char* plid,char* pljt,Developer* dev1,Developer* dev2) :
    Employee(plname,plid,pljt)
    
{
        devList[
0]=dev1;
        devList[
1]=dev2;
        TotalTime
=dev1->GetTimeInJob() +dev2->GetTimeInJob();
    }

    
void Job();
    
int GetTotaltime()
    
{
        
return TotalTime;
    }

    
~Leader(void);
protected:
    Developer
* devList[2];
    
int TotalTime;
}
;

#pragma  once
#include 
" employee.h "
#include 
" Leader.h "

class  Manager :
    
public  Employee
{
public:
    Manager(
void);
    
~Manager(void);
    Manager(
char* plname,char* plid,char* pljt,Leader* leader1,Leader* leader2) :
    Employee(plname,plid,pljt)
    
{
        LeaderList[
0]=leader1;
        LeaderList[
1]=leader2;
        iTotalTime
=leader1->GetTotaltime() +leader2->GetTotaltime();
    }

    
void Job();
    
int GetTotalTime()
    
{
        
return iTotalTime;
    }

protected:
    Leader
* LeaderList[2];
    
int iTotalTime;
}
;

//  class08011601.cpp : Defines the entry point for the console application.
//

#include 
" stdafx.h "
#include 
" Employee.h "
#include 
" Developer.h "
#include  
" Manager.h "
#include 
" Leader.h "
using   namespace  std;

int  _tmain( int  argc, _TCHAR *  argv[])
{
    
char* Ename=new char[20];
    
char* Eid=new char[20];
    
char* Etime=new char[20];
    
int time;
    cin
>>Ename>>Eid>>Etime>>time;
    Employee emp(Ename,Eid,Etime);
    Developer dev(Ename,Eid,Etime,time);
    Developer dev1(dev);
    Leader leader1(Ename,Eid,Etime,
&dev1,&dev1);
    Leader leader2(Ename,Eid,Etime,
&dev1,&dev1);
    Manager manager(Ename,Eid,Etime,
&leader1,&leader2);
    Manager manager1(Ename,Eid,Etime,
&leader1,&leader2);
    Manager manager2(Ename,Eid,Etime,
&leader1,&leader2);
    Manager manager3(Ename,Eid,Etime,
&leader1,&leader2);
//    Manager manager((Ename,Eid,Etime,&leader1,&leader2);
//    cout<<emp.GetId()<<emp.GetJoinTime()<<emp.GetName()<<endl;
    emp.Job();
//    emp.Show();
//    dev.Show();
    dev.Job();
    dev1.Job();
    leader1.Job();
    leader2.Job();
    manager.Job();
    manager1.Job();
    manager2.Job();
    manager3.Job();
    
char a;
    cin
>>a;
    delete Ename;
    Ename
=NULL;
    delete Eid;
    Eid
=NULL;
    delete Etime;
    Etime
=NULL;
    
return 0;
}



#include 
" StdAfx.h "
#include 
" .developer.h "
using   namespace  std;

Developer::Developer(
void )
{
    TimeInJob 
= 0;
}


Developer::
~ Developer( void )
{
}


Developer::Developer(Developer
&  dev)
{
    
    strcpy(Developer::GetId(),dev.GetId());
    strcpy(Developer::GetJoinTime(),dev.GetJoinTime());
    strcpy(Developer::GetName(),dev.GetName());
    Developer::TimeInJob
=dev.TimeInJob;
}


void  Developer::Job()
{
    cout
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    Employee::Show();
    cout
<<"Done a job"<<endl;
    cout
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}

Developer::Developer(
int  iTimeInJob)
{
    TimeInJob 
= iTimeInJob;
}

/*Developer::Developer(char* plname,char* plid,char* pljt,int iTimeInJob) :
   Employee(char* plname,char* plid,char* pljt)
{
    TimeInJob = iTimeInJob;
}
*/

void  Developer::Show()
{
    Employee::Show();
    cout
<<Developer::GetTimeInJob()<<endl;
}

int  Developer::GetTimeInJob()
{
    
return TimeInJob;
}



#include 
" StdAfx.h "
#include 
" .employee.h "
using   namespace  std;

Employee::Employee(
void )
{
    memset(Name,
0,sizeof(Name));
    memset(ID,
0,sizeof(ID));
    memset(JoinTime,
0,sizeof(JoinTime));
}


Employee::
~ Employee( void )
{
}

Employee::Employee(
char *  plname, char *  plid, char *  pljt)
{
    strcpy(Name,plname);
    strcpy(ID,plid);
    strcpy(JoinTime,pljt);
}

/*virtual void Employee::Job()
{
    cout<<"I'm Employee"<<endl;
}
*/

char *  Employee::GetName()
{
    
return Name;
}

char *  Employee::GetId()
{
    
return ID;
}

char *  Employee::GetJoinTime()
{
    
return JoinTime;
}

void  Employee::Show()
{
    cout
<<GetId()<<" ";
    cout
<<GetName()<<" ";
    cout
<<GetJoinTime()<<" ";    
//    Job();
}



#include 
" StdAfx.h "
#include 
" .leader.h "
using    namespace  std;

Leader::Leader(
void )
{
    devList[
0]=new Developer();
    devList[
1]=new Developer();
}


Leader::
~ Leader( void )
{
    delete devList[
0];
    delete devList[
1];
    devList[
0= NULL;
    devList[
1]=NULL;
}

void  Leader::Job()
{
    cout
<<"---------------------------"<<endl;
    cout
<<"Leader Information"<<endl;
    Leader::Show();
    cout
<<endl;
    cout
<<"---------------------------"<<endl;
    cout
<<"Leader Job"<<endl;
    devList[
0]->Show();
    devList[
1]->Show();
    cout
<<"Leader Total Time: "<<Leader::GetTotaltime()<<endl;
    cout
<<"---------------------------"<<endl;
}



#include 
" StdAfx.h "
#include 
" .manager.h "

Manager::Manager(
void )
{
    LeaderList[
0]=new Leader();
    LeaderList[
1]=new Leader();
}


Manager::
~ Manager( void )
{
    delete LeaderList[
0];
    delete LeaderList[
1];
    LeaderList[
0= NULL;
    LeaderList[
1]=NULL;
}

void  Manager::Job()
{
    cout
<<"--------------------------------"<<endl;
    cout
<<"Manager information"<<endl;
    Manager::Show();
    cout
<<endl;
    cout
<<"--------------------------------"<<endl;
    cout
<<"Manager Job"<<endl;
    LeaderList[
0]->Job();
    LeaderList[
1]->Job();
    cout
<<"Manager Total Time: "<<Manager::GetTotalTime()<<endl;
    cout
<<"-------------------------------"<<endl;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值