【C++】图1为一个多重继承的类继承关系示意图,各类的主要成员已有说明,请编程实现体现该继承关系的程序,并定义教师对象、学生对象、研究生对象和在职研究生对象,输出他们的信息。  数据成员  数据类

本文档展示了如何使用C++实现一个多重继承的类结构,包括Data、Teacher、Student、Postgrad和Tpost类。每个类都有相应的数据成员和成员函数,特别是Tpost类作为教师和研究生的组合,具备教师的工资和研究生的系别信息。通过main函数创建并打印了各类的对象,验证了类的正确实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求:

图1为一个多重继承的类继承关系示意图,各类的主要成员已有说明,请编程实现体现该继承关系的程序,并定义教师对象、学生对象、研究生对象和在职研究生对象,输出他们的信息。
数据成员
数据类Data:成员name保存姓名。
教师类Teacher:增加成员salary保存工资。
学生类Student:增加成员id保存学号。
研究生类Postgrad:增加成员dn保存系别。
教师中的在职研究生类Tpost:不另外定义成员。
成员函数
在各类中定义输出所有数据成员的函数void print()。
图1

代码描述:

1.创建Data类

创建Data.h文件,用于声明Data类

#pragma once
#include<iostream>
using namespace std;
//定义Date类
class Data
{
private:
	string name;	//私有的学生姓名
public:
	//构造函数 初始化成员属性 name
	Data(string name);
	//输出所有数据成员
	void print();
};


2.实现Data类

创建Data.cpp文件,用于实现Data类

//导入Data类的声明文件
#include "Data.h"
//实现Data类的构造方法 初始化
Data::Data(string name)
{
	this->name = name;
}
//打印输出Data类的所有成员属性
void Data::print()
{
	cout << name << endl;
}

3.创建Teacher类

创建Teacher.h文件,用于声明Teacher类

#pragma once
//导入Data类的声明文件
#include"Data.h"
//定义Teacher类 继承Data类
class Teacher :virtual public Data
{
private:
	int salary;	//私有的成员属性 工资
public:
	//构造函数 初始化成员属性
	Teacher(string name, int sal);
	//输出所有数据成员
	void print();
};


4.实现Teacher类

创建Teacher.cpp文件,用于实现Teacher类

//导入Data类的声明文件
#include "Teacher.h"
//实现Teacher类的构造方法 初始化
Teacher::Teacher(string name, int sal) :Data(name)
{
	this->salary = sal;
}

//打印输出Teacher类的所有成员属性
void Teacher::print()
{
	Data::print();
	cout << salary << endl;
}

5.创建Student类

创建Student.h文件,用于声明Student类

#pragma once
//导入Data类的声明文件
#include"Data.h"
//定义Student类 继承Data类
class Student :virtual public Data
{
private:
	int id;	//私有的成员属性 学号
public:
	//构造函数 初始化成员属性
	Student(string name, int id);
	//输出所有数据成员
	void print();
};


6.实现Student类

创建Student.cpp文件,用于实现Student类

//导入Data类的声明文件
#include "Student.h"
//实现Student类的构造方法 初始化
Student::Student(string name, int id) :Data(name)
{
	this->id = id;
}

//打印输出Student类的所有成员属性
void Student::print()
{
	Data::print();
	cout << id << endl;
}

7.创建Postgrad类

创建Postgrad.h文件,用于声明Postgrad类

#pragma once
//导入Student类的声明文件
#include"Student.h"
//定义Postgrad类 继承Student类
class Postgrad :public Student
{
private:
	string dn;	//私有的保存系别的属性
public:
	//构造函数 初始化成员属性
	Postgrad(string name, int id, string dn);
	//输出所有数据成员
	void print();
};


8.实现Postgrad类

创建Postgrad.cpp文件,用于实现Postgrad类

//导入Postgrad类的声明文件
#include "Postgrad.h"
//实现Postgrad类的构造方法 初始化
Postgrad::Postgrad(string name, int id, string dn) :Student(name, id), Data(name)
{
	this->dn = dn;
}
//打印输出Postgrad类的所有成员属性
void Postgrad::print()
{
	Student::print();
	cout << dn << endl;
}

9.创建Tpost类

创建Tpost.h文件,用于声明Tpost类

#pragma once
//导入Postgrad类的声明文件
#include"Postgrad.h"
//导入Teacher类的声明文件
#include"Teacher.h"
//定义Tpost类 继承Postgrad类和Teacher类
class Tpost :public Postgrad, public Teacher
{
public:
	//构造函数 初始化成员属性
	Tpost(string name, int id, string dn, int sal);//名字,学号,系别,工资
	//输出所有数据成员
	void print();
};

10.实现Tpost类

创建Tpost.cpp文件,用于实现Tpost类

//导入Tpost类的声明文件
#include "Tpost.h"
//实现Tpost类的构造方法 初始化
Tpost::Tpost(string name, int id, string dn, int sal) :Data(name), Postgrad(name, id, dn), Teacher(name, sal)
{
}
//打印输出print类的所有成员属性
void Tpost::print()
{
	Postgrad::print();
	Teacher::print();
}

11.Main函数实现

创建main.cpp实现各个类的功能

#include"Data.h"
#include"Student.h"
#include"Teacher.h"
#include"Postgrad.h"
#include"Tpost.h"
int main()
{
	//Data类测试
	Data data("张三");//名字Data类
	data.print();
	cout << endl;
	//Student类测试
	Student student("李四", 21001);//名字,学号student类
	student.print();
	cout << endl;
	//Teacher类测试
	Teacher teacher("王五", 25000);//名字,工资teacher类
	teacher.print();
	cout << endl;
	//Postgrad类测试
	Postgrad pos("赵六", 21002, "计算机");//名字,学号,系别,postgrad类
	pos.print();
	cout << endl;
	//Tpost类测试
	Tpost tpo("周七", 21003, "计算机", 22000);////名字,学号,系别,工资
	tpo.print();
	return 0;
}

样例输出:

样例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孑然R

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值