一.前言

如上

二.题目

分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派
生出新类Teacher_Cadre(教师兼干部)类。要求:
(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。
(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post
(职务)。在Teacher_Cadre类中还包含数据成员wages(工资)。
(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用
这些数据成员时,指定作用域。
(4)在类体中声明成员函数,在类外定义成员函数。
(5)在派生类Teacher_Cadre的成员函数show 中调用Teacher类中的display函数,
输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。

三.代码

#include<iostream>
#include<string>
using namespace std;
class Person{//基类 public:Person(string,int,char,string,string);//构造函数 void display();//展示数据信息 protected:string name;//姓名int age;//年龄char sex;//性别string addr;//住址string tel;//电话
};Person::Person(string n,int a,char s,string ad,string t){//构造函数 name=n;age=a;sex=s;addr=ad;tel=t;
} void Person::display() {//展示数据信息cout<<"name: "<<name<<endl;cout<<"age: "<<age<<endl;cout<<"sex: "<<sex<<endl;cout<<"addr: "<<addr<<endl;cout<<"tel: "<<tel<<endl;
}class Teacher:virtual public Person{//公用派生类Teacher  public:Teacher(string n,int a,char s,string ad,string t,string ti);//构造函数void display();//展示数据信息 protected:string title;//职称
};//构造函数
Teacher::Teacher(string n,int a,char s,string ad,string t,string ti):Person(n,a,s,ad,t){title=ti;
} void Teacher::display(){//展示数据信息 Person::display() ;cout<<"title: "<<title<<endl;
} class Cadre:virtual public Person{//公用派生类Cadrepublic:Cadre(string n,int a,char s,string ad,string t,string p);//构造函数void display();//展示数据信息protected:string post;//职位
};//构造函数
Cadre::Cadre(string n,int a,char s,string ad,string t,string p):Person(n,a,s,ad,t){post=p;
}  void Cadre::display() {//展示数据信息Person::display() ;cout<<"post: "<<post<<endl;
}class Teacher_Cadre:public Teacher,public Cadre{//公用派生类 Teacher_Cadrepublic:Teacher_Cadre(string n,int a,char s,string ad,string t,string ti,string p,int w);//构造函数void show();//展示数据信息private:int wage;//工资
};//构造函数
Teacher_Cadre::Teacher_Cadre(string n,int a,char s,string ad,string t,string ti,string p,int w)
:Teacher(n,a,s,ad,t,ti),Cadre(n,a,s,ad,t,p),Person(n,a,s,ad,t){wage=w;
}void Teacher_Cadre::show(){//展示数据信息Teacher::display();cout<<"post: "<<post<<endl;cout<<"wage: "<<wage<<endl;
}int main(){Teacher_Cadre t_c("Wang-li",50,'f',"135 Beijing Road,shanghai","(021)61234567","prof.","president",1534.5);t_c.show();return 0;
}

c++程序设计中虚基类,多继承知识点相关推荐

  1. C++中虚基类相关的知识点

    目录 前言 虚基类的作用 虚基类的声明 虚基类的初识化 前言 在上一篇的文章中我们知道了, C++语言是知识多继承的,并且一个子类可以有多个父类子类,拥有所有父类的成员变量,子类会继承父类的所有成员函 ...

  2. 多继承中虚基类构造函数的一种调用规则

    规则:如果父类中有虚基类(A),且有一个直接基类(B)是虚基类的子类,那么子类(C或D)若不显式调用虚基类的有参数构造函数,它的直接基类(B)即使在构造列表中调用了非默认构造函数,那么也会直接调用虚基 ...

  3. java 虚基类_C++中虚基类与抽象类的简单理解。

    虚基类   是相对于它的派生类而言的,它本身可以是一个普通的类. 只有它的派生类虚继承它的时候,它才称作虚基类,如果没有虚继承的话,就称为基类.比如类B虚继承于类A,那类A就称作类B的虚基类,如果没有 ...

  4. C++中的虚继承与虚基类

    1.Cpp中的虚继承与虚基类 在多继承时,很容易产生命名冲突的问题,即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有可能发生,比如典型的是菱形继承,如下图所示: 类A派 ...

  5. 虚继承c语言例子,C/C++ 多继承{虚基类,虚继承,构造顺序,析构顺序}

    C/C++:一个基类继承和多个基类继承的区别 1.对多个基类继承会出现类之间嵌套时出现的同名问题,如果同名变量或者函数出现不在同一层次,则底层派生隐藏外层比如继承基类的同名变量和函数,不会出现二义性, ...

  6. C++虚继承和虚基类详解(二)

    虚继承(Virtual Inheritance) 为了解决多继承时的命名冲突和冗余数据问题,C++ 提出了虚继承,使得在派生类中只保留一份间接基类的成员. 在继承方式前面加上 virtual 关键字就 ...

  7. C++ 多继承类 虚基类

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/jzj_c_love/article/d ...

  8. c++中的虚特性(虚基类、虚函数、纯虚函数)

    1. 虚基类 1.1 虚基类作用 为了解决多继承时的命名冲突和冗余数据问题,使得派生类中只保留一份间接基类的成员. 其本质是是让某个类做出声明,承诺愿意共享它的基类.其中,这个被共享的基类就称为虚基类 ...

  9. C++虚继承和虚基类;虚函数与继承

    ref http://blog.csdn.net/owen7500/article/details/52432970?locationNum=4&fps=1 http://blog.csdn. ...

最新文章

  1. 访问ASP.NET临时文件夹的权限问题
  2. os项目icon和default 等相关图标命名规则和大小设置
  3. C/C++经典程序训练5---图形打印问题(SDUT1135)_JAVA
  4. 计算机网络安装建设厂家,互联网工厂设备与安装总结报告(26页)-原创力文档...
  5. RAPID 信号的互锁和同步 WaitTestAndSet 和 TestAndSet
  6. linux mysql安装_Linux下安装mysql服务(超详细)
  7. HttpURLConnection类的使用
  8. ArcGIS API for JavaScript与 npm
  9. ubuntu16.04 安装中文输入法
  10. java图书购买系统的项目_JAVA入门第三季项目(图书查找系统)
  11. 微信小程序 Video API
  12. 网站压力测试工具Webbench介绍
  13. node 请求内网_Nodejs轻松搭建局域网服务器
  14. html跳转按钮谷歌浏览器点击没反应,在各个浏览器点击按钮都没有反应
  15. 傅里叶变换对照表_实验室仪器中英文及缩写对照表
  16. 农业大省吉林谋乡村全面振兴:农业强、农村美、农民富
  17. 初中数学知识点总结_初中数学知识点总结大全 这下全了!
  18. po是什么java_java中po层
  19. java回车触发按钮_java回车触发按钮的代码
  20. Datawhale零基础入门数据挖掘-Task5模型融合

热门文章

  1. Nature公开1300多篇论文工厂论文的期刊分布,这个杂志高居榜首
  2. mac基础操作:在Mac上怎么使用夜览
  3. 怎么new一个指针_C++知识点 34:指针运算符重载 -- 智能指针
  4. 网页导出pdf不完整_网站中的页面如何转成PDF文档?
  5. 第十二届 2021年1月 蓝桥杯青少年组省赛C++组 第1题--第3题(scratch实现)
  6. 信奥中的数学:母函数
  7. Python 刷题常用语法与数据结构汇总-2022.01.30
  8. 【docker】第二节:安装nginx、mysql、php
  9. 同一个页面提交多个form表单方法(详细)
  10. awk 匹配_linux的awk命令详解,通俗易懂