问题及代码:
/*Copyright (c)2016,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:main.cpp
*作 者:崔青青
*完成日期:2016年5月18日
*版 本 号:v1.0
*问题描述:
*输入描述:
*输出描述:
*/
#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;
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;
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;
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;
cout<<getname()<<" 的保护者是 "<<protecter.getname()<<endl;
return getname();
}
int main()
{
Person p(45,"thief");
Person leader1(25,"leader1");
Polic police(24,"police",3,leader1);
Cook cook(19,"cook",30,police);
police.arrest(p);
cook.getCake(5);
return 0;
}
运行结果:
知识点总结:
继承是对代码的重复利用,应学会应用继承。
学习心得:
继承是对代码的重复利用,应学会继承。