2636: B3 指向基类的指针访问派生类的成员函数

时间限制: 1 Sec  内存限制: 128 MB

提交: 433  解决: 141

题目描述

领导类(Leader)和工程师类(Engineer)都是人类(Person)的派生类。请将下面代码中空缺的部分填上,使main函数中能通过指向Person类的指针,调用Leader和Engineer类中各自的成员函数show,输出相关的信息
//************* begin *****************
#include <iostream>
using namespace std;
class Person
{
public:
    Person(string na, int a):name(na),age(a) {}
    ___(1)_____ show() ___(2)___;
protected:
    string name;  // 姓名
    int age;      // 年龄
};
class Leader: ___(3)_____ Person
{
private:
    string job;     // 职务
    string dep;     // 部门
public:
    Leader(string na, int a, string j, string d): ____(4)______{ }
    void show(){____(5)____}  
};
//************* end *****************
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;
}

输入

第一行输入是某领导的信息,如“Wang 40 Manager Sales”表示40岁的王(Wang)领导是销售部(Sales)的经理(Manager)。
第二行输入某工程师的信息,如“Zhang 30 Software”表示30岁的张(Zhang)是工程师,他的专业是软件(Software)

输出

规定的格式输出信息,请注意空格及最后的标点。

样例输入

Wang 40 Manager Sales
Zhang 30 Software

样例输出

Wang is Manager in Sales department.
Zhang is an engineer of Software major.

迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……

#include <iostream>
using namespace std;
class Person
{
public:
Person(string na, int a):name(na),age(a) {}
virtual void 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();
};
void Person::show()
{
cout<<name;
}
void Leader::show()
{
Person::show();
cout<<" is "<<job<<" in "<<dep<<" department."<<endl;
}
class Engineer: public Person
{
string major1; // 专业
public:
Engineer (string na, int a, string m): Person(na, a),major1(m) { }
void show()
{
cout<<name<<" is an engineer of "<<major1<<" 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;
}

YTU 2636: B3 指向基类的指针访问派生类的成员函数的更多相关文章

  1. C++_派生类的构造函数及派生类和基类之间的特殊关系

    派生类和基类的概念及派生类构造函数的原理: 创建一个叫做TableTennisPlayer的基类,记录会员的名字和是否有球桌. //声明一个基类 class TableTennisPlayer { p ...

  2. C++成员函数指针错误用法警示(成员函数指针与高性能的C++委托,三篇),附好多评论

    今天做一个成绩管理系统的并发引擎,用Qt做的,仿照QtConcurrent搞了个模板基类.这里为了隐藏细节,隔离变化,把并发的东西全部包含在模板基类中.子类只需注册需要并发执行的入口函数即可在单独线程 ...

  3. C++中的空类,编译器默认可以产生哪些成员函数

    C++中的空类,编译器默认可以产生哪些成员函数 C++中创建一个空类:class Empty {};默认会生成4个函数,其函数的原型如下: public: Empty() { ... } Empty( ...

  4. C++类继承--基类new和用派生类new的区别

    实际上无论是用基类还是派生类New, 结果是一样的: #include <stdio.h> class Base { public: int a; Base(){ a=0; } virtu ...

  5. 基类的两个派生类再派生一个派生类 用virtual避免二义性

    class vehicle{ int MaxSpeed; int Weight;public: vehicle(int maxspeed, int weight) :MaxSpeed(maxspeed ...

  6. C++空类产生哪些成员函数 || C++类可以自动生成的6个成员函数

    class Empty {     public:     Empty(); // 缺省构造函数     Empty( const Empty& ); // 拷贝构造函数     ~Empty ...

  7. Private表示该属性(方法)为只有本类内部可以访问(类内部可见)。

    Public表示该属性(方法)公开: (想用private还要用set和get方法供其他方法调用,这样可以保证对属性的访问方式统一,并且便于维护访问权限以及属性数据合法性) 如果没有特殊情况,属性一定 ...

  8. python类中保存非绑定方法作为成员函数

    习惯了函数式,动不动传一个函数.但是直接把函数作为类方法保存,再调用时会报错. 举一个unittest时的例子 class MyTestCase(unittest.TestCase): @classm ...

  9. C++ 虚函数在基类与派生类对象间的表现及其分析

    近来看了侯捷的<深入浅出MFC>,读到C++重要性质中的虚函数与多态那部分内容时,顿时有了疑惑.因为书中说了这么一句:使用“基类之指针”指向“派生类之对象”,由该指针只能调用基类所定义的函 ...

随机推荐

  1. vue 改变插值方法

    Vue默认的插值是双大括号{{}}.但有时我们会有需求更改这个插值的形式. delimiters:['${','}']  //必须要用一个数组来接收,用逗号隔开.

  2. CentOS7.4 搭建和使用telnet

    1.先检查是否安装了telnet rpm -qa | grep telnet  //检查你的CentOS是否安装了telnet和telnet-server rpm -qa xinetd //检查你的C ...

  3. [Python3网络爬虫开发实战] 2.1-HTTP基本原理

    在本节中,我们会详细了解HTTP的基本原理,了解在浏览器中敲入URL到获取网页内容之间发生了什么.了解了这些内容,有助于我们进一步了解爬虫的基本原理. 1. URI和URL 这里我们先了解一下URI和 ...

  4. thinkphp3.2使用PHPQrcode实现二维码

    Thinkphp中没有二维码相关的生成库,百度有不少工具和库 这里就实例一下通过think3.2搭配phpqrcode来完成生成二维码的功能. 至于phpQrcode库文件 百度很容易找到这里也给大家 ...

  5. C#DateTimeFormatInfo类

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAzAAAACdCAIAAADkAArhAAAgAElEQVR4nO1dWXbjug7UzrI0LS1L0/ ...

  6. linux 命令终端提示符显示-bash-4.2#解决方法

    原地址:http://blog.csdn.net/liulihui1988/article/details/52796395 终端提示符显示的是-bash-4.2# 而不是root@主机名 + 路径的 ...

  7. 77-CCI,Commodity Channel Index,商品通道指标.(2015.7.1)

    CCI,Commodity Channel Index 商品通道指标 Channel Index,商品通道指标.(2015.7.1)" title="77-CCI,Commodit ...

  8. admin源码之url设计

    如何实现批量设计url? 1.创建Django项目 2.新建app01 和 app02 3.在models.py中创建模型 4.在settings.py中完成数据库配置.app配置等 5.数据库迁移 ...

  9. C++对拍数据生成

    #include<map> #include<ctime> #include<queue> #include<cmath> #include<cs ...

  10. Nginx配置文件nginx.conf 详解

    #定义Nginx运行的用户和用户组 user www www;   #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8;   #全局错误日志定义类型,[ debu ...