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

问题及代码:

/*
 *Copyright (c) 2016,烟台大学计算机学院
 *All rights reserved.
 *文件名称:zwj.cpp
 *作    者:张伟晶
 *完成日期:2016年5月9日
 *版 本 号:v1.0
 *
 *问题描述:警察和厨师(2)
 *输入描述:
 *程序输出:
 */
#include<iostream>
#include<string>
using namespace std;
class Person
{
private:
    int age;
    string name;
public:
    Person(int ,string);
    void action();
    int  getage(){return age;}
    string getname(){return name;}
};
Person::Person(int a,string nam):age(a),name(nam){}
class Polic:public Person
{
private:
    int level;
    Person leader;   // 增加了person 类的leader
public:
    Polic(int ,string  ,int ,Person );
    void arrest(Person);
};
Polic::Polic(int a,string nam,int l , Person lea):Person(a,nam),level(l),leader(lea){}
class Cook:public Person
{
private:
    double salary;
    Polic protecter;  //  增加了polic类的保护者
public:
    Cook(int ,string ,double,Polic);
    string getCake(int);
};
Cook::Cook(int a,string nam,double s , Polic aa):Person(a,nam),salary(s),protecter(aa){}
void Person::action()
{
    cout<<name<<" have some action ."<<endl;
}
void Polic::arrest(Person p)
{
    cout<<getname()<<" arrest "<<p.getname()<<" , "<<getname()<<" 的等级是 "<<level<<" , "<<getname()<<" 的年龄是 "<<getage()<<endl;
    cout<<endl;
        // police 的 leader
    cout<<getname()<<" 的领导是 "<<leader.getname()<<endl;
    cout<<endl;
    cout<<leader.getname()<<" 的年龄是 "<<leader.getage()<<endl;
    cout<<endl;
}
string Cook::getCake(int a)
{
    cout<<getname()<<" get "<<a<<" cakes."<<endl;
    cout<<endl;
    // cook 的保护者
    cout<<getname()<<" 的保护者是 "<<protecter.getname()<<endl;
    return getname();
}
int main()
{
    Person p(20,"person1");
    Person leader1(20,"leader1");
    Polic police(23,"police2",3,leader1);
    Cook cook(19,"cook3",5000,police);
    police.arrest(p);
    cook.getCake(5);
    return 0;

}

运行结果:

知识点总结:

定义构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,也可以自动调用基类构造函数完成。要保证在基类中定义了派生类需要的构造函数。

学习心得:

时间: 2024-11-05 18:32:36

第十一周项目3-警察和厨师(2)的相关文章

第十周第十一周项目3警察与厨师的派生类

/*Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称 : *作 者 : 李钊 *完成日期 : 2016年5月10号 *版 本 号 : v1.0 * *问题描述 : 警察与厨师的派生类 *输入描述 : *程序输出 : 人的行为警察的动作厨师的动作 */ #include <iostream> using namespace std; class Person { protected: int age; string name; pu

第十一周项目3-警察和厨师(1)

问题及代码: /* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:zwj.cpp *作 者:张伟晶 *完成日期:2016年5月8日 *版 本 号:v1.0 * *问题描述:警察和厨师 *输入描述: *程序输出: */ #include<iostream> #include<string> using namespace std; class Person { private: int age; string na

第十周项目四 警察与厨师(2)

/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:舒文超 * 完成日期:2016年5月6日 * 版本号:vc++6.0 * 问题描述:(1)下面的类图,为Polic类 和Cook类增加了对象成员, 请扩充代码,完成上述各项要 求 (图片见附件) 要求:各个成员函数,只要输出相关的信息 即可,暂不深究其业务功能请为各个类增加 构造函数在实现中,可以增加需要的其他函 数自行编制main函数,完成初步的测试

第10周项目3 - 警察和厨师

/*Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:my.cpp *作 者: *完成日期:2016年5月10日 * *问题描述:(1)根据下面的类图,定义各个类: 要求: ?各个成员函数,只要输出相关的信息即可,暂不深究其业务功能 ?请为各个类增加构造函数 ?在实现中,可以增加需要的其他函数 ?自行编制main函数,完成初步的测试 */ 这里写图片描述 #include <iostream> using namespac

第十一周项目1

#include <iostream> using namespace std; class Stu { public: Stu (int n,string nam); void display(); protected: int num; //学号 string name; //姓名 }; Stu::Stu(int n,string nam ) { num=n; name=nam; } void Stu::display() { cout<<"学号:"<

十一周 项目三 点类

#include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0),y(y0){}; void PrintPoint(); //输出点的信息 double getx() { return x; } double gety() { return y; } protect

十一周 项目2 职员有薪水了 扩展

#include <iostream> #include <cstring> using namespace std; class CPerson { protected: char *m_szName; char *m_szId; int m_nSex;//0:women,1:man int m_nAge; public: CPerson(char *name,char *id,int sex,int age); void Show1(); ~CPerson(); }; CPer

十一周 项目2 职员有薪水了

#include <iostream> using namespace std; class CPerson { protected: string m_szName; string m_szId; int m_nSex;//0:women,1:man int m_nAge; public: CPerson(string name,string id,int sex,int age); void Show1(); ~CPerson(); }; CPerson::CPerson(string n

十一周 项目4 类族的设计

#include <iostream> #include <cmath> using namespace std; class Point { public: Point(double x=0,double y=0); void setPoint(double,double); double getx() { return x; } double gety() { return y; } void display(); protected: double x,y; }; class