虚基类——(1)定义人员类Person: 公有成员:姓名(Name); 保护成员:性别(Gender),年龄(Age); 构造函数和析构函数
题目描述:
(1)定义人员类Person:
公有成员:姓名(Name);
保护成员:性别(Gender),年龄(Age);
构造函数和析构函数
(2) 从人员类Person派生学生记录类StudentRecord:
添加公有成员:学号(Number),班级(ClassName),
添加静态公有成员:学生总人数(TotalCount);
添加保护成员:平均成绩(Score);
实现构造函数和析构函数。
(3) 从人员类Person派生教师记录类TeacherRecord:
添加公有成员:学院(CollegeName),系(DepartmentName);
添加保护成员:教龄(Year);
实现构造函数和析构函数。
(4)从学生记录类StudentRecord和教师记录类TeacherRecord派生学生助教类TeachingAssistant:
添加公有成员:辅导课程(LectureName);
实现公有函数:显示人员信息(Show),屏幕打印 姓名,性别,年龄,学号,班级,学生总人数,平均成绩,学院,系,教龄,辅导课程。
实现构造函数和析构函数。为检验类间结构设计是否正确,设计函数void SetName(String name)实现更改一名助教的姓名的功能。
创建一个助教类的对象
助教
姓名 性别 年龄 学号 班级 平均成绩 学院 系 教龄 辅导课程
郑七 男 22 2010123 软20101 89 信息 软件 1 数据结构
显示其信息。
调用更改姓名的函数,更改其姓名为“郑八”,并再次显示其信息。
输入
无
输出
显示构造的信息和更改前和更改后的助教信息
样例输入
样例输出
Student郑七constructed
teacher郑七constructed
teachingassistant郑七constructed
Name:郑七 Gender:男 Age:22 Number:2010123 ClassName:软20101 TotalCount:1 Score:8
9 CollegeName:信息 DepartmentName:软件 Year:1 LectureName:数据结构
Name:郑八 Gender:男 Age:22 Number:2010123 ClassName:软20101 TotalCount:1 Score:8
9 CollegeName:信息 DepartmentName:软件 Year:1 LectureName:数据结构
teachingassistant郑八destructed
teacher郑八destructed
Student郑八destructed
Person郑八destructed
提示
各类的构造函数和析构函数都有输出。
调用公有函数Show,以分别显示各个记录的人员信息。
在派生助教类时,使用虚基类。
#include <iostream>
#include <string>
using namespace std; class Person
{
protected:
string Gender;
int Age;
public:
string Name;
Person(string _Name="郑七",string _Gender="男",int _Age=)
{
Name=_Name;
Gender=_Gender;
Age=_Age;
cout<<"Person"<<Name<<"constructed"<<endl;
}
~Person()
{
cout<<"Person"<<Name<<"destructed"<<endl;
}
};
class StudentRecord:virtual public Person
{
public:
int Number;
string ClassName;
int TotalCount;
protected:
int Score;
StudentRecord(string _Name="郑七",string _Gender="男",int _Age=,int _Number=,string _ClassName="软20101",int _TotalCount=,int _Score=):Person(_Name,_Gender,_Age),TotalCount(_TotalCount)
{
Number=_Number;
ClassName=_ClassName;
Score=_Score;
cout<<"Student"<<Name<<"constructed"<<endl;
}
~StudentRecord()
{
cout<<"Student"<<Name<<"destructed"<<endl;
}
};
class TeacherRecord :virtual public Person
{
public:
string CollegeName;
string DepartmentName;
protected:
int Year;
TeacherRecord(string _Name="郑七",string _Gender="男",int _Age=,int _Number=,string _CollegeName="信息",string _DepartmentName="软件",int _Year=):Person(_Name,_Gender,_Age)
{
{
CollegeName=_CollegeName;
DepartmentName=_DepartmentName;
Year=_Year;
cout<<"teacher"<<Name<<"constructed"<<endl;
} }
~TeacherRecord()
{
cout<<"teacher"<<Name<<"destructed"<<endl;
}
}; class TeachingAssistant:virtual public StudentRecord,virtual public TeacherRecord
{
public:
string LectureName;
TeachingAssistant(string _LectureName="数据结构",string _Name="郑七",string _Gender="男",int _Age=,int _Number=,string _CollegeName="信息",string _DepartmentName="软件",int _Year=,string _ClassName="软20101",int _TotalCount=,int _Score=):StudentRecord(_Name, _Gender, _Age, _Number, _ClassName, _TotalCount, _Score),TeacherRecord(_Name,_Gender,_Age,_Number,_CollegeName,_DepartmentName,_Year)
{
LectureName=_LectureName;
cout<<"teachingassistant"<<Name<<"constructed"<<endl;
}
void Print()
{
cout<<"Name:"<<Name<<" ";
cout<<"Gender:"<<Gender<<" ";
cout<<"Age:"<<Age<<" ";
cout<<"Number:"<<Number<<" ";
cout<<"ClassName:"<<ClassName<<" ";
cout<<"TotalCount:"<<TotalCount<<" ";
cout<<"Score:"<<Score<<" ";
cout<<"CollegeName:"<<CollegeName<<" ";
cout<<"DepartmentName:"<<DepartmentName<<" ";
cout<<"Year:"<<Year<<" ";
cout<<"LectureName:"<<LectureName<<endl;
}
void SetName(string _Name)
{
Name=_Name;
}
~TeachingAssistant()
{
cout<<"teachingassistant"<<Name<<"destructed"<<endl;
}
}; int main()
{
TeachingAssistant a1;
a1.Print();
a1.SetName("郑八");
a1.Print();
return ;
}
虚基类——(1)定义人员类Person: 公有成员:姓名(Name); 保护成员:性别(Gender),年龄(Age); 构造函数和析构函数的更多相关文章
- Java类的定义与类的实例化
目录 Java类的定义与类的实例化 类的定义 定义一个简单的类 定义一个成员变量 定义一个方法 定义一个构造器 类的实例化 创建对象及使用对象: 创建对象的过程在内存中的表现 Java类的定义与类的实 ...
- c#类—成员函数和封装及构造函数、析构函数、静态成员
C# 类(Class) 当您定义一个类时,您定义了一个数据类型的蓝图.这实际上并没有定义任何的数据,但它定义了类的名称意味着什么,也就是说,类的对象由什么组成及在这个对象上可执行什么操作.对象是类的实 ...
- 走进C++程序世界-------类的定义和使用(数据成员和方法成员,析构函数,构造函数,内联实现)
类的成员简介 在C++中,可以通过声明一个类来穿件一种新的类型.类将一组变量(他们的类型通常不同)和一组相关的函数组合在一起.类可以有各种类型的变量组成,还可以包含其他类对象.成员变量称为数据成员它们 ...
- C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类
类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. //单继承的定义 class B:public A { ...
- typescript 类(类的定义、继承、修饰符、抽象类)
代码: // 本节内容 // 1.类的定义 // 2.类的继承 // 3.访问修饰符 // 4.静态属性和静态方法 // 5.抽象类和多态 // js // function Person(name) ...
- Ruby学习: 类的定义和实例变量
ruby是完全面向对象的,所有的数据都是对象,没有独立在类外的方法,所有的方法都在类中定义的. 一.类的定义语法 类的定义以 class 关键字开头,后面跟类名,以 end标识符结尾. 类中的方法以 ...
- Java:【面向对象:类的定义,静态变量,成员变量,构造函数,封装与私有,this】
本文内容: 什么是面对对象 类的定义与对象实例化 成员变量 成员变量的有效范围 成员变量的赋值 静态变量.方法与实例变量.方法 构造函数 封装与私有 this关键字 注:函数和方法是一样东西.[由于我 ...
- C++学习4-面向对象编程基础(面向对象概念,定义类,定义对象)
什么是面向对象? 在软件的设计过程中的两种方式: 把程序按照算法的执行步骤来拆解,一步步实现,这是面向过程编程: 把程序按照现实世界的理解,分成不同对象,通过多个对象之间的相互作用,来完成程序的最终功 ...
- C++ 类外定义
类内定义与内联函数 像下面这种函数名与函数体都写在类里面的函数形式被称作类内定义,编译器编译的时候会把它默认成内联函数. class Student { public: void setAge(int ...
随机推荐
- SQL Server存储过程作业(二)
阶段1:练习——统计某类型客房的入住客人人数 需求说明 使用存储过程统计在指定类型的客房入住客人的总人数 提示: 存储过程的输入参数是指定的客房类型名称 USE Hotel GO --阶段1:查询入住 ...
- 不能访问windows installer 服务,可能你在安全模式下运行 windows ,或者windows installer
windows installer服务解决方案 很多朋友在安装MSI格式的文件包时,经常会遇到windows installer出错的情况,有如下几种现象: 1.所有使用windows install ...
- lucene7.1.0实现搜索文件内容
Lucene的使用主要体现在两个步骤: 1 创建索引,通过IndexWriter对不同的文件进行索引的创建,并将其保存在索引相关文件存储的位置中. 2 通过索引查寻关键字相关文档. 首先,我们需要定义 ...
- 图的遍历---DFS
类型一:邻接表 题目一:员工的重要性 题目描述 给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id. 比如,员工1是员工2的领导,员工2是员工3的领导.他们相应的重要度 ...
- LA 3363
Run Length Encoding(RLE) is a simple form of compression. RLE consists of the process for searching ...
- Java核心技术读书笔记01
Volume I Chapter 1 An Introduction to Java • 1.1 Java as a Programming Platform• 1.2 The Java ‘Whi ...
- 搭建rsync服务(端口号873)
rsync详细参数 1.-v,--verbose 详细模式输出,传输是的进度信息 2.-z,--compress 传输是进行压缩以提高传输效率,--comperess -level = NUM可以按级 ...
- 如何使用qtp12 utf进行功能测试
首先,按照本博客的安装教程走的,右键管理员运行 接下来点击继续,这个界面只需要勾选到web即可 点击ok,开始运行 进入到主界面之后,file新建一个测试. 可以修改路径等等 点击create之后,出 ...
- VS2015 C++ 获取 Edit Control 控件的文本内容,以及把获取到的CString类型的内容转换为 int 型
UpdateData(true); //读取编辑框内容,只要建立好控件变量后调用这个函数使能,系统就会自动把内容存在变量里 //这里我给 Edit Control 控件创建了一个CString类型.V ...
- 使用idea创建maven项目时 需要注意的问题
截几张图来说明吧 上面的红色框如果不选中 将来创建的工程中没有webapp目录以及下面的子目录 选中之后 然后一直“下一步” 直到工程创建 但是我第一次按照正确的方式操作时 工程中并没有src ...