标签:
问题及代码:
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:77.cpp *作 者:董凯琦 *完成日期:2016年5月6日 *版 本 号:v1.0 * *问题描述: 完成警察类和厨师类 *输入描述: *程序输出: */ #include <iostream> using namespace std; class Person { public: Person(int ,string ); void action(); string getName() { return name; } private: int age; string name; }; Person::Person(int a, string n):age(a), name(n) {} void Person::action() { cout<<name<<" do some action"<<endl; } class Police: public Person { public: Police(int a, string n, int l, Person); void arrest(Person); void show(); private: int level; //级别 Person leader; //增加了Person类的领导 }; Police::Police(int a, string n, int l, Person p):Person(a,n),level(l),leader(p) {} 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 p); void getCake(int); void show(); private: double salary; //薪水 Police protector; //厨师小店的警察 }; Cook::Cook(int a, string n, double s,Police p): Person(a,n),salary(s),protector(p) {} void Cook::getCake(int n) { cout<<"Cook "<<getName()<<" gave me " <<n<<" cakes."<<endl; } void Cook::show() { cout<<"Cook "<<getName()<<" is protected by Police "<<protector.getName()<<endl; } int main() { Person jerry(43,"Jerry"); Police jack(30,"Jack",2,jerry); Cook john(24,"John",5000,jack); jack.show(); john.show(); return 0; }运行结果:
知识点总结:
从这个程序中,我们掌握住了派生类构造函数的赋值方法以及各成员函数的实现过程。
学习心得:
还是容易犯细节上的错误,但是比之前好的多。相信多加练习,一定能够熟练掌握!
标签:
原文地址:http://blog.csdn.net/asleny/article/details/51331252