问题及代码:
/* *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, string, int); void arrest(Person);//警察逮捕的为Person类的一个对象 private: int level; //级别 }; Police::Police(int a, string n, int l):Person(a,n),level(l) {} void Police::arrest(Person p) { cout<<" Police:"<<getName()<<" arrest " <<p.getName()<<endl; } class Cook: public Person { public: Cook(int, string, double); void getCake(int); private: double salary; //薪水 }; Cook::Cook(int a, string n, double s):Person(a,n),salary(s) {} void Cook::getCake(int n) { cout<<" Cook:"<<getName()<<" gave me " <<n<<" cakes."<<endl; } int main() { Person zhang(20,"zhangsan"); Police li(30,"lisi",4); Cook wang(25,"wangwu",5000); li.arrest(zhang); wang.getCake(10); return 0; }
运行结果:
知识点总结:
从这个有趣的程序设计中,我们基本掌握住了基类与派生类之间的关系以及实现派生类函数的方法。
需要注意的是,即使派生类继承方式为公有,但是不能直接访问基类的私有数据成员。例如
cout<<" Cook:"<<getName()<<" gave me " <<n<<" cakes."<<endl;
要通过基类的公有成员函数来间接访问私有数据成员
学习心得:
熟能生巧,在每个设计过程中要充分理解各个函数的含义。
时间: 2024-10-05 13:15:31