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

来源:互联网 发布:java接口的修饰符 编辑:程序博客网 时间:2024/05/18 00:07
实现了几个类的继承操作 ,
#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;
}