C++多重继承师生类复盘
要求:做一个基类Data,数据成员name,派生类教师teacher和学生student继承Data的name数据成员,此外教师新增薪水sal数据成员,学生新增学号id数据成员,派生类研究生Postgard继承学生,新增系别dn数据成员,派生类教师研究生Tpost继承研究生和教师,不新增数据成员
在所有类里都加入函数成员Point()用来打印所有信息
代码详细注解:
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
using namespace std;class Data {//基类
public:Data(string name):name(name) {}//数据成员初始化string Name() { return name; }//私有成员对外部接口void Print() {cout << "name = " << Name() << endl;//外部接口作为打印值,这里也可以用name私有成员}
private:string name;
};
class Teacher :virtual public Data{//虚基类,名字是所有类里公有的,所以只需要继承一份
public://子类的构造函数,给出所有基本信息。Teacher(string name, float sal = 0) :Data(name),sal(sal) {}//虚基类若不是默认函数,则在继承的子类里的构造函数也要给出基类的初始化float Sal() { return sal; }void Print() {cout << " name = " << Name() << " sal = " << Sal() << endl;}
private:float sal;
};
class Student :virtual public Data{
public://同teacher类的注释Student(string name, int id = 0) :Data(name),id(id) {}int Id() { return id; }void Print() {cout << " name = " << Name() << " id = " << Id() << endl;}
private:int id;
};
class Postgrad :virtual public Student {
public://构造函数给出子类继承父类和自身本身的信息Postgrad(string name, int id, string dn) :Data(name), Student(name, id),dn(dn) {}string Dn() { return dn; }void Print() {cout << " name = " << Name() << " dn = " << Dn() << endl;}
private:string dn;
};
class Tpost :virtual public Teacher, virtual public Postgrad {
public:Tpost(string name, int id, string dn, float sal) :Data(name), Postgrad(name,id,dn), Teacher(name, sal) ,Student(name,id){}void Print() {//打印继承的父类函数,需要给出命名空间来限定是哪一个打印函数,//但这里会造成名字打印两次的尴尬,不知道怎么处理Postgrad::Print();Teacher::Print();}
};
void test() {/*Data* sp;sp = new Teacher ("李华", 60000);//不可以这样使用new,需要好好去复习。sp->Print();delete sp;sp = new Tpost("张三", 2021463030603,"计算机", 50000);sp->Print();delete sp;*/Tpost t1("zhangsan", 2021463030603, "jisuanji", 50000);t1.Print();Teacher t2("lisi", 60000);t2.Print();
}
int main() {test();
}
C++多重继承师生类复盘相关推荐
- 多重继承的构造函数和析构函数
多重继承的构造函数和析构函数的执行顺序: //此处不做注释和说明了,看程序能读懂的 #include <iostream> using namespace std; class base1 ...
- Python学习笔记整理(十六)类的设计
如何使用类来对有用的对象进行建模? 一.Python和OOP Python和OOP实现可以概括为三个概念. 继承 继承是基于Python中属性查找(在X.name表达式中) 多态 在X ...
- python顺序结构有一个入口_高楼万丈平地起,基础要打牢!Python获取类的层次结构和继承顺序...
上一篇内容我们详细了解了Python使用inspect模块获取一个模块.类.实例.函数的信息及帮助文档的方法(参见新手入门到进阶,你不可不知的模块,用Python获取对象的详细信息). 前情提要 今天 ...
- python类汇总_Python 类总结
Python可以继承多个父类,多重继承. 类支持多个对象的产生,命名空间的继承,运算符重载 1).类产生多个实例对象 Python OOP模型中的两种对象:类对象和实例对象. 类对象提供默认的行为,是 ...
- JAVA类的继承、覆写和final关键字
extends不用多说,是来继承的关键字,但它有几个要点: java不允许多重继承(一个类只能继承一个父类,不能继承多个父类) 派生类会继承基类所有属性和方法,但不能直接访问基类的private私有属 ...
- python 构造函数继承_Python多重继承的异构构造器
在Python里面,如果你使用上Qt,SQLAlchemy,Twisted之类各种大型类库时候,有时候多重继承Multiple Inheritance是个简单的解决方法,但是多重继承的复杂性总容易造成 ...
- python一般的类有三部分组成_Python学习笔记总结(三)类
一.类简单介绍 1.介绍 类是Python面向对象程序设计(OOP)的主要工具,类建立使用class语句,通过class定义的对象. 类和模块的差异,类是语句,模块是文件. 类和实例 实例:代表程序领 ...
- Javascript框架 - ExtJs - 类
类(ExtJs Class) preparation! 我用的是ext-4.2,解压后会得到以下文件 学习要用到的文件很少,现在保留以下文件和整个文件夹,然后删除其它文件并保持目录结构.本页面底部有提 ...
- [转载] 当心掉进Python多重继承里的坑
参考链接: Python多重继承 关于类的知识点里面,有一块是关于多重继承,跟其他主流语言一样,Python也支持多重继承,多重继承虽然有一些好处,但是坑很多,我们今天就来聊一聊Python多重继承里 ...
最新文章
- 中职计算机php学啥,计算机专业都学什么主要课程有什么_中职中专网
- MSTAR SETBOX 常用API
- 在一个公司死磕了5-10年的人,最后都怎么样了?
- 微信小程序中换行,空格(多个空格)写法
- 数据结构与算法分析资源总结
- php的浏览历史怎么做,php浏览历史记录的方法
- 实现连麦_直播课程系统如何实现互动连麦效果?
- 90亿拿下德邦 京东物流加速“造血”
- python怎么换行继续写脚本_python怎么换行继续写脚本
- iOS开发之解析XML格式数据
- OpenERP工作流不同角色看属于自己审批的方法
- Python安装graphics库
- MS509Team----------------Cknife
- Spring核心包介绍
- 关于滤镜的使用,使图片默认为全灰色
- win10下的VMware还原网络设置,无法创建VMware网络适配器解决办法
- Linux(进程概念详解)
- VMware vCenter Server 8.0U1 发布 - 集中式管理 vSphere 环境
- 【定量分析、量化金融与统计学】多元回归模型与回归推理
- OpenCL 安装ocl-icd