习题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会自动检测表达式类型输出。

相关文章
|
5月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
80 1
|
9月前
|
数据安全/隐私保护
类与对象\类的定义
类与对象\类的定义
61 0
|
10月前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
|
10月前
|
C#
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
2.【类的组合(在一个类中定义一个类)】
2.【类的组合(在一个类中定义一个类)】
76 0
backtrader_源码学习_findbases函数用于发现两个类之间有多少继承的类
backtrader_源码学习_findbases函数用于发现两个类之间有多少继承的类
89 0
C++学习——继承与派生
C++学习——继承与派生
157 0
C++学习——继承与派生
|
存储 Java 编译器
【C++初阶:类和对象(上篇)】类的定义 | 类的访问限定符及封装 | 类的作用域 | 类的实例化 | 类对象模型 | this指针
【C++初阶:类和对象(上篇)】类的定义 | 类的访问限定符及封装 | 类的作用域 | 类的实例化 | 类对象模型 | this指针
209 0
【C++初阶:类和对象(上篇)】类的定义 | 类的访问限定符及封装 | 类的作用域 | 类的实例化 | 类对象模型 | this指针

热门文章

最新文章