继承与派生(1)·定义一个基类Person,它有3个protected的数据成员:姓名、性别、年龄

简介: 继承与派生(1)·定义一个基类Person,它有3个protected的数据成员:姓名、性别、年龄

c语言程序设计实验报告

一、实验目的:

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

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

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

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


二、学习要求

       (1)了解继承在面向对象程序设计中的重要作用。

       (2) 理解继承与派生的概念。

       (3)掌握派生类构造函数的定义。


三、实验内容

       要求定义一个基类Person,它有3个protected的数据成员:姓名、性别、年龄;创建Person类的公有派生类Employee,增加两个数据成员: 基本工资 basicSalary, 请假天数leaveDays。为它们定义构造函数和显示数据成员信息的成员函数show()。


四、基本知识

什么是继承

       继承是面向对象软件技术当中的一个概念,与多态、封装共为面向对象的三个基本特征。继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。  


什么是派生

       在C++中,所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类称为“基类(base class)”或“父类(father class)”,新建的类称为“派生类(derived class)”或“子类(son class )”。


       一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。通过继承,一个新建子类从已有的父类那里获得父类的特性。从另一角度说,从已有的类(父类)产生一个新的子类,称为类的派生。类的继承是用已有的类来建立专用类的编程技术。派生类继承了基类的所有数据成员和成员函数,并可以对成员作必要的增加或调整。一个基类可以派生出多个派生类,每一个派生类又可以作为基类再派生出新的派生类,因此基类和派生类是相对而言的。一代一代地派生下去,就形成类的继承层次结构。相当于一个大的家族,有许多分支,所有的子孙后代都继承了祖辈的基本特征,同时又有区别和发展。与之相仿,类的每一次派生,都继承了其基类的基本特征,同时又根据需要调整和扩充原 有的特征。


       以上介绍的是最简单的情况:一个派生类只从一个基类派生,这称为单继承(single inheritance),这种继承关系所形成的层次是一个树形结构,如图所示。


26.png

       一个派生类不仅可以从一个基类派生,也可以从多个基类派生。也就是说,一个派生类可以有一个或者多个基类。一个派生类有两个或多个基类的称为多重继承(multiple inheritance)。关于基类和派生类的关系,可以表述为派生类是基类的具体化,而基类则是派生类的抽象。


五、实验步骤

代码如下:

首先,我们先写person类:

#include <iostream>
using namespace std;
class Person
{
public: 
  void get_value() 
  {
    cin>>name>>sex>>age;
  }
  void show()
  {
    cout << "name: " << name << endl;
    cout << "sex: " << sex << endl;
    cout << "age: " << age << endl;
  }
protected:
    char name;
    char sex;
    int age;
};

下面就是主函数及作用域:

class Employee:public Person
{
public:
    void get_value1();
    void show1();
private:
  float basicSalary;
  int leaveDays;
}; 
void Employee::get_value1()
    {
    get_value(); 
    cin>>basicSalary>>leaveDays;
    }
void Employee::show1()
    {
      show();
      cout << "basicSalary: " <<basicSalary << endl;
    cout << "leaveDays: " <<leaveDays << endl;
    }
int main()
{
  Employee p;
  p.get_value1();
  p.show1();
  return 0;
}


实验结果

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

相关文章
|
17天前
10 # 类:继承和成员修饰符
10 # 类:继承和成员修饰符
29 0
|
12天前
|
C++
C++程序中的派生类成员访问属性
C++程序中的派生类成员访问属性
21 1
|
10月前
提供结构丰富的Person类
提供结构丰富的Person类
27 0
|
11月前
|
存储 编译器 C语言
[C++ 提高] --- 类的存储 和 包含虚函数的类
[C++ 提高] --- 类的存储 和 包含虚函数的类
39 0
[C++ 提高] --- 类的存储 和 包含虚函数的类
|
12月前
|
Java
定义Student类
定义Student类
90 0
|
C语言 C++
习题10.3 分别定义Teacher类和Cadre类,采用多重继承方式由这两个类派生出新类Teacher_Cadre类。
习题10.3 分别定义Teacher类和Cadre类,采用多重继承方式由这两个类派生出新类Teacher_Cadre类。
214 0
|
Java
编写Java程序,创建一个 Person 类,该类中有一个类成员变量 country、一个实例变量 name 和另一个实例变量 age。
编写Java程序,创建一个 Person 类,该类中有一个类成员变量 country、一个实例变量 name 和另一个实例变量 age。
412 0
编写Java程序,创建一个 Person 类,该类中有一个类成员变量 country、一个实例变量 name 和另一个实例变量 age。
C#(十六)之C#类中的成员属性 构造函数 析构函数
本篇内容记录了成员属性、构造函数、析构函数的一些基本用法。
269 0
C#(十六)之C#类中的成员属性 构造函数 析构函数
C/C++---Person类、学生类、教师类和研究生类(多重继承)
C/C++---Person类、学生类、教师类和研究生类(多重继承)
819 0