C++:多继承习题2

发布于:2025-02-10 ⋅ 阅读:(68) ⋅ 点赞:(0)

题目内容:
分别声明Teacher类和Cadre类,采用多重继承派生出新类Teacher_Dadre。要求:
(1)在两个基类中都包含姓名、年龄、性别、地址和电话。
(2)在Teacher类中包含title数据成员,Cadre中包含post。在Teacher_Cadre中包含wages。
(3)对两个基类中的姓名、年龄、性别、地址和电话用相同的名字,在引用这些数据成员时,指定作用域。

输出样例如图:

代码如下:

#include<iostream>
#include<string>
using namespace std;

class teacher
{
protected:
    string name;
    string gender;
    int age;
    string address;
    string phone;
    string title;

public:
    teacher(string n, string g, int a, string addr, string p, string t)
        : name(n), gender(g), age(a), address(addr), phone(p), title(t) {}
    void showteacher()
    {
        cout << "姓名: " << name << endl;
        cout << "性别: " << gender << endl;
        cout << "年龄: " << age << endl;
        cout << "地址: " << address << endl;
        cout << "电话: " << phone << endl;
        cout << "职称: " << title << endl;
    }
};

class Cadre
{
protected:
    string name;
    string gender;
    int age;
    string address;
    string phone;
    string post;

public:
    Cadre(string n, string g, int a, string addr, string p, string pos)
        : name(n), gender(g), age(a), address(addr), phone(p), post(pos) {}

    void showCadre()
    {

        cout << "职位: " << post << endl;
    }
};

class teacher_Cadre : public teacher, public Cadre
{
private:
    float wages;

public:
    teacher_Cadre(string n, string g, int a, string addr, string p, string t, string pos, float w)
        : teacher(n, g, a, addr, p, t), Cadre(n, g, a, addr, p, pos), wages(w) {}

    void showteacherCadre()
    {
        showteacher();
        showCadre();
        cout << "工资: " << wages << endl;
    }
};

int main()
{
    teacher_Cadre T = teacher_Cadre("雷欧", "男", 999999, "狮子座", "10000000000", "教授", "王子", 12000);
    T.showteacherCadre();
    return 0;
}

这段 C++ 代码实现了一个简单的面向对象程序,用于管理教师干部的信息。下面将逐步解释代码的各个部分。具体解释如下:

 1. Teacher类的定义

    • name:教师的姓名。
    • gender:教师的性别。
    • age:教师的年龄。
    • address:教师的地址。
    • phone:教师的电话号码。
    • title:教师的职称。
  • 构造函数teacher(string n, string g, int a, string addr, string p, string t) 用于初始化教师对象的各个成员变量。
  • 成员函数showteacher() 用于输出教师的信息。

2. Gadra类的定义

    • name:干部的姓名。
    • gender:干部的性别。
    • age:干部的年龄。
    • address:干部的地址。
    • phone:干部的电话号码。
    • post:干部的职位。
  • 构造函数Cadre(string n, string g, int a, string addr, string p, string pos) 用于初始化干部对象的各个成员变量。
  • 成员函数showCadre() 用于输出干部的职位信息。

3. Teacher_Gadre类的定义

  • 继承关系teacher_Cadre 类从 teacher 类和 Cadre 类公有继承,这意味着它可以访问 teacher 类和 Cadre 类的公有和保护成员。
  • 成员变量wages 表示教师干部的工资。
  • 构造函数teacher_Cadre(string n, string g, int a, string addr, string p, string t, string pos, float w) 调用 teacher 类和 Cadre 类的构造函数来初始化继承的成员变量,并初始化自身的 wages 成员变量。
  • 成员函数showteacherCadre() 调用 showteacher() 和 showCadre() 函数分别输出教师和干部的信息,然后输出教师干部的工资信息。

4. main函数

  • 创建一个 teacher_Cadre 类的对象 T,并使用构造函数初始化其成员变量。
  • 调用 T.showteacherCadre() 函数输出教师干部的信息。

觉得有帮助就给博主点个关注叭~~

有问题的可以私信或者在评论区一起交流

友友们一起加油叭QAQ