第十、十一周项目三-警察和厨师(2)

<pre name="code" class="cpp">/*
 *Copyright(c)2016,烟台大学计算机与控制工程学院
 *All rights reserved
 *文件名称:123.cpp
 *作    者:王蕊
 *完成日期:2016年5月7日
 *版 本 号:v1.0
 *
 *问题描述:根据类图,为Police类和Cook类增加了对象成员,请扩充代码,并完成测试。
*/
#include <iostream>
using namespace std;
class Person
{
public:
    Person(int a, string n):age(a),name(n){};
    void action();
    string getName()
    {
        return name;
    }
private:
    int age;
    string name;
};
void Person::action()
{
    cout<<" "<<name<<" does a action"<<endl;
}
class Police: public Person
{
public:
    Police(int a, string n, int l, Person p);
    void arrest(Person);
    void show();
private:
    int level; //级别
    Person leader;  //领导
};
Police::Police(int a, string n, int l, Person lea):Person(a,n),level(l),leader(lea) {}
void Police::arrest(Person p)
{
    cout<<"Police "<<getName()<<" arrest " <<p.getName()<<endl;
}
void Police::show()
{
    cout<<"Police "<<getName()<<", leader is " <<leader.getName()<<endl;
}
class Cook: public Person
{
public:
    Cook(int a, string n, double s,Police pr);
    void getCake(int,Person);
    void show();
private:
    double salary; //薪水
    Police protector;  //厨师小店的片区警察
};
Cook::Cook(int a, string n, double s,Police pr):Person(a,n),salary(s),protector(pr) {}
void Cook::getCake(int n,Person p)
{
    cout<<"Cook "<<getName()<<" gave " <<p.getName()<<" "<<n<<" cakes."<<endl;
}
void Cook::show()
{
    cout<<"Cook "<<getName()<<" is protected by "<<protector.getName()<<endl;
}

int main()
{
    Person Jason(43,"Jason");
    Police King(30,"King",2,Jason);
    Cook Bob(24,"Bob",5000,King);
    King.show();
    Bob.show();
    Bob.getCake(5,Jason);
    return 0;
}
运行结果:
第十、十一周项目三-警察和厨师(2)_第1张图片
 
 
学习心得:
要学会使用复制构造函数,会使逻辑更加清楚。

你可能感兴趣的:(第十、十一周项目三-警察和厨师(2))