习题10.3 分别定义Teacher类和Cadre类,采用多重继承方式由这两个类派生出新类Teacher_Cadre类。

简介: 习题10.3 分别定义Teacher类和Cadre类,采用多重继承方式由这两个类派生出新类Teacher_Cadre类。

c语言程序设计实验报告


一、实验目的:

       1、掌握C语言的数据类型和变量的声明。

       2、掌握不同类型数据之间赋值的规律。

       3、掌握C语言的运算符和表达式的使用。

       4、熟悉C程序的编辑、编译、连接和运行的过程。


二、实验内容:

由这两个类派生出新类Teacher_Cadre(教师兼干部)类。要求:

① 在两个基类中都包含姓名、年龄、性别等数据成员。


② 在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务)。在Teacher_Cadre类中还包含数据成员wages(工资)。


③ 对两个基类中的姓名、年龄、性别等数据成员用相同的名字,在引用这些数据成员时,指定作用域。


④ 在类体中声明成员函数,在类外定义成员函数。


⑤ 在派生类Teacher_Carde的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别,然后再用cout语句输出职务和工资。


三、实验步骤:

       在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务)。在Teacher_Cadre类中还包含数据成员wages(工资)。

#include <iostream>
#include<string>
using namespace std;
class Teacher
{
public:
  Teacher(string n, int a, char s,string t)
  {
  name=n;
  age=a;
  sex=s;
  title=t;
  }
  void display()
  {
    cout<<"name:"<<name<<endl;
    cout<<"age:"<<age<<endl;
    cout<<"sex:"<<sex<<endl;
    cout<<"title:"<<title<<endl;
  }
protected:
  string name;
  int age;
  char sex;
  string title;
};

      对两个基类中的姓名、年龄、性别等数据成员用相同的名字,在引用这些数据成员时,指定作用域。

class Cadre
{
public:
  Cadre(string n, int a, char s,string p)
  {
    name=n;
    age=a;
    sex=s;
    post=p;
  }
  void display1()
  {
    cout<<"name:"<<name<<endl;
    cout<<"age:"<<age<<endl;
    cout<<"sex:"<<sex<<endl;
    cout<<"post:"<<post<<endl;
  }
protected:
  string name;
  int age;
  char sex;
  string post;
};

        在派生类Teacher_Carde的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别,然后再用cout语句输出职务和工资。

class Teacher_Cadre:public Teacher,public Cadre
{
public:
  Teacher_Cadre(string n, int a, char s,string t,string p,float w):
    Teacher(n,a,s,t),Cadre(n,a,s,p),wages(w){}
  void show()
  {display();
  cout<<"post:"<<post<<endl;
  cout<<"wages:"<<wages<<endl;
  }
private:
  float wages;
};
int main()
{
  Teacher_Cadre teacher1("zhangsan",21,'n',"professor", "assitant",100);
  teacher1.show();
  return 0;
}

运行结果

4.png

cin和cout是c++中的标准输入输出流

一、cin

 cin的一般用法:


 cin>>变量a>>变量b>>变量c;


       cin会自动辨别变量的类型,如a可以是char,b可以是int,c可以是float。


       接收字符串时,遇到空格,tab键和换行符都会结束接收。


       cin.getline()可以接收空格,cin.getline(char*,int,char),内有三个参数,第一个表示要接收的字符串,第二个表示接收字符个数,第三个表示结束字符。当第三个省略时默认结束字符为'\0'。


二、cout

       cout的一般用法:

  cout<<表达式1<<表达式2<<表达式3;

       如要换行可使用 cout<<endl;语句。

       和cin一样,cout会自动检测表达式类型输出。

相关文章
|
2月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
67 1
|
6月前
|
数据安全/隐私保护
类与对象\类的定义
类与对象\类的定义
45 0
|
6月前
|
Java 编译器 数据处理
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
63 0
|
7月前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
2.【类的组合(在一个类中定义一个类)】
2.【类的组合(在一个类中定义一个类)】
54 0
|
设计模式 安全 Java
Python面向对象、继承的基本语法、单继承和多层继承、子类重写父类的同名方法、子类调用父类的同名方法、继承中的 init 、 多继承、私有权限、类属性、类方法、静态方法、多态、鸭子类型
称为类 B 继承类 A 特点: B类的对象可以使用 A类的属性和方法 优点: 代码复用.重复相同的代码不用多次书写. 名词: 类A: 父类 基类 类B: 子类 派生类 2. 单继承和多层继承[理解] 单继承: 如果一个类只有一个父类,把这种继承关系称为单继承 多继承: 如果一个类有多个父类,把这种继承关系称为多继承 多层继承: C–> B --> A 3. 子类重写父类的同名方法[掌握] 重写: 子类定义和父类名字相同的方法. 为什么重写: 父类中的方法,不能满足子类对象的需求,所以
561 1
Python面向对象、继承的基本语法、单继承和多层继承、子类重写父类的同名方法、子类调用父类的同名方法、继承中的 init 、 多继承、私有权限、类属性、类方法、静态方法、多态、鸭子类型
第五周学习java 继承 在子类父类中有相同参数,子类继承分类后如何进行调用,判断创建的对象属性哪个类
第五周学习java 继承 在子类父类中有相同参数,子类继承分类后如何进行调用,判断创建的对象属性哪个类
第五周学习java 继承 在子类父类中有相同参数,子类继承分类后如何进行调用,判断创建的对象属性哪个类
C++学习——继承与派生
C++学习——继承与派生
149 0
C++学习——继承与派生