第十六周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;
}

 

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值