第10六周oj刷题——Problem J: B3 指向基类的指针访问派生类的成员函数
第十六周oj刷题——Problem J: B3 指向基类的指针访问派生类的成员函数
<h2>Description</h2><div class="content"><div>领导类(Leader)和工程师类(Engineer)都是人类(Person)的派生类。请将下面代码中空缺的部分填上,使main函数中能通过指向Person类的指针,调用Leader和Engineer类中各自的成员函数show,输出相关的信息</div><div><h2>Input</h2><div class="content"><div>第一行输入是某领导的信息,如“Wang 40 Manager Sales”表示40岁的王(Wang)领导是销售部(Sales)的经理(Manager)。</div><div>第二行输入某工程师的信息,如“Zhang 30 Software”表示30岁的张(Zhang)是工程师,他的专业是软件(Software)</div><p></p></div><h2>Output</h2><div class="content"><div>规定的格式输出信息,请注意空格及最后的标点。</div><p></p></div><h2>Sample Input</h2><pre class="content"><span class="sampledata">Wang 40 Manager Sales Zhang 30 Software</span>
Sample Output
Wang is Manager in Sales department.
Zhang is an engineer of Software major.
/* All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 6 月 21 日 * 版 本 号:v1.0 */ #include <iostream> using namespace std; class Person { public: Person(string na, int a):name(na),age(a) {} void virtual show(){} protected: string name; // 姓名 int age; // 年龄 }; class Leader:public Person { private: string job; // 职务 string dep; // 部门 public: Leader(string na, int a, string j, string d):Person(na,a),job(j),dep(d) { } void show() { cout<<name<<" is "<<job<<" in "<<dep<<" department."<<endl; } }; class Engineer: public Person { string major; // 专业 public: Engineer (string na, int a, string m): Person(na, a),major(m) { } void show() { cout<<name<<" is an engineer of "<<major<<" major."<<endl; } }; int main() { Person *p; string name, job, dept,major; int age; cin>>name>>age>>job>>dept; p=new Leader(name,age,job,dept); p->show(); cin>>name>>age>>major; p=new Engineer(name,age,major); p->show(); return 0; }
总结:这道题是我出问题较多的题,也可是我的问题所在,我会借这道题找出自己的问题,在不断地练习,把它拿下,加油加油!!
心得体会:今天这个测试做的还是不错的,挺顺利的,就是自己速度有点慢了,还有一点的小问题,希望在考前的这几天能够好好的刷题,不断的积累,我觉得刷题积累真的很好用,今天就是一个很好的证明。继续努力,继续坚持,向优秀的人学习,不断取得进步!!!