题目描述:

(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 数据结构
显示其信息。

调用更改姓名的函数,更改其姓名为“郑八”,并再次显示其信息。

输入

无

输出

显示构造的信息和更改前和更改后的助教信息

样例输入

 

样例输出

Person郑七constructed
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); 构造函数和析构函数的更多相关文章

  1. Java类的定义与类的实例化

    目录 Java类的定义与类的实例化 类的定义 定义一个简单的类 定义一个成员变量 定义一个方法 定义一个构造器 类的实例化 创建对象及使用对象: 创建对象的过程在内存中的表现 Java类的定义与类的实 ...

  2. c#类—成员函数和封装及构造函数、析构函数、静态成员

    C# 类(Class) 当您定义一个类时,您定义了一个数据类型的蓝图.这实际上并没有定义任何的数据,但它定义了类的名称意味着什么,也就是说,类的对象由什么组成及在这个对象上可执行什么操作.对象是类的实 ...

  3. 走进C++程序世界-------类的定义和使用(数据成员和方法成员,析构函数,构造函数,内联实现)

    类的成员简介 在C++中,可以通过声明一个类来穿件一种新的类型.类将一组变量(他们的类型通常不同)和一组相关的函数组合在一起.类可以有各种类型的变量组成,还可以包含其他类对象.成员变量称为数据成员它们 ...

  4. C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类

    类继承 在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生. 从一个基类派生的继承称为单继承:从多个基类派生的继承称为多继承. //单继承的定义 class B:public A { ...

  5. typescript 类(类的定义、继承、修饰符、抽象类)

    代码: // 本节内容 // 1.类的定义 // 2.类的继承 // 3.访问修饰符 // 4.静态属性和静态方法 // 5.抽象类和多态 // js // function Person(name) ...

  6. Ruby学习: 类的定义和实例变量

    ruby是完全面向对象的,所有的数据都是对象,没有独立在类外的方法,所有的方法都在类中定义的. 一.类的定义语法 类的定义以 class 关键字开头,后面跟类名,以 end标识符结尾. 类中的方法以 ...

  7. Java:【面向对象:类的定义,静态变量,成员变量,构造函数,封装与私有,this】

    本文内容: 什么是面对对象 类的定义与对象实例化 成员变量 成员变量的有效范围 成员变量的赋值 静态变量.方法与实例变量.方法 构造函数 封装与私有 this关键字 注:函数和方法是一样东西.[由于我 ...

  8. C++学习4-面向对象编程基础(面向对象概念,定义类,定义对象)

    什么是面向对象? 在软件的设计过程中的两种方式: 把程序按照算法的执行步骤来拆解,一步步实现,这是面向过程编程: 把程序按照现实世界的理解,分成不同对象,通过多个对象之间的相互作用,来完成程序的最终功 ...

  9. C++ 类外定义

    类内定义与内联函数 像下面这种函数名与函数体都写在类里面的函数形式被称作类内定义,编译器编译的时候会把它默认成内联函数. class Student { public: void setAge(int ...

随机推荐

  1. py2exe打包遇到的问题

    py2exe打包python成.exe文件 打包过程和结果 1.创建setup脚本打包文件,其中设置打包的属性和方法.注意:尽量将被打包文件和此打包脚本放在同目录下(因为在尝试非同目录下时,出现了非可 ...

  2. python爬虫:找房助手V1.0-爬取58同城租房信息

    1.用于爬取58上的租房信息,限成都,其他地方的,可以把网址改改: 2.这个爬虫有一点问题,就是没用多线程,因为我用了之后总是会报: 'module' object has no attribute ...

  3. Python 遍历目录

    代码: 1.递归使用遍历目录 import os def scanfile(path): filelist = os.listdir(path) allfile = [] for filename i ...

  4. ROS: Ubuntu16.04安装ROS-kinetic

    参考连接:SLAM: Ubuntu14.04_Kylin安装ROS-Indigo第一步: 软件源配置 1. 增加下载源(增加ubuntu版的ros数据仓库,即下载源)(通用指令适合任何版本的ros) ...

  5. MFC和OpenCV结合

    最重要的一点:如何把OpenCV的框嵌入MFC的ID.. 把cv显示框嵌入 pic控件 cvNamedWindow("kalman"); HWND hWnd = (HWND) cv ...

  6. jquery的attr和prop

    注意不同版本的attr和prop,attr适用于自定义dom值,prop适用于带有固有属性

  7. [adb]查看 App的appPackage和appActivity

    最近在写app的UI框架,写脚本之前需要知道app的包名和activity,如果获取呢: 需求配置abdrioid sdk环境 方法1:abd log 1. 打开cmd命令窗口2.在命令窗口中输入,a ...

  8. open-ldap服务安装(1)

    LDAP简介 LDAP 代表 轻量级目录访问协议.在我的理解中ldap就是一个数据库. 在LDAP中,目录条目以分层树状结构排序. 传统上,这种结构反映了地理和组织边界,表示国家/地区的条目显示在树的 ...

  9. oculus network error ovr53225466

    最近调试oculus,搬运代码到win10平台,发现最近FB对oculus的服务程序进行了更新,必须要登陆账号才能进行调试. 于是安装oculusclient,但是登陆的过程中出现了问题,如果不用代理 ...

  10. php unlink()函数使用

    最近在写个网站,需要上传图片,如果修改图片,就图片就没有用了,会占用服务器的硬盘资源,所以想到用unlink函数删除旧照片. 问题 : unlink函数只能删除 相对于函数执行文件的相对目录  或  ...