第十六周oj刷题——Problem J: B3 指向基类的指针访问派生类的成员函数

来源:互联网 发布:java第三方接口开发 编辑:程序博客网 时间:2024/05/19 13:20
<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 SalesZhang 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;}

 

总结:这道题是我出问题较多的题,也可是我的问题所在,我会借这道题找出自己的问题,在不断地练习,把它拿下,加油加油!!

心得体会:今天这个测试做的还是不错的,挺顺利的,就是自己速度有点慢了,还有一点的小问题,希望在考前的这几天能够好好的刷题,不断的积累,我觉得刷题积累真的很好用,今天就是一个很好的证明。继续努力,继续坚持,向优秀的人学习,不断取得进步!!!

0 0
原创粉丝点击