实验3 派生类与继承实验

实验3  派生类与继承实验

1、实验目的

(1)掌握派生类的声明方法和派生类构造函数的定义方法;

(2)掌握不同继承方式下,基类成员在派生类中的访问属性;

(3)掌握在继承方式下,构造函数和析构函数的执行顺序与构造规则。

2、实验学时:6学时

3、实验内容

(1)编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、年龄的输入和输出设计成一个类Person,并作为学生类Student和教师类Teacher的基类。

int main()

{ Student stu(2015001,”李明”,”男”,20,”计算机”,90);

  Teacher teac;

…………
    }

#include
#include
#include
using namespace std;
class A
{
    private:
    int bianhao;
    string name;
    string sex;
    int nianling;
    public:
    int getbianhao();
    string getname();
    string getsex();
    int getnianling();
	int outbianhao();
    string outname();
    string outsex();
    int outnianling();
};
string A::getsex()
{
	cout<<"scanf sex:";
	cin>>sex;
	return sex;
}
A::getbianhao()
{
    cout<<"scanf bianhao:";
    cin>>bianhao;
	return bianhao;
}
string A::getname()
{
    cout<<"scanf name:";
    cin>>name;
	return name;
}
A::getnianling()
{
    cout<<"scanf nianling:";
    cin>>nianling;
	return nianling;
}
A::outbianhao()
{
    cout<<"bianhao:"<>xibie;
	return xibie;
}
s::getscore()
{
    cout<<"scanf score:";
    cin>>score;
	return score;
}
string s::outxibie()
{
    cout<>zhicheng;
	return zhicheng;
}
string t::getbumen()
{
    cout<<"scanf bumen:";
    cin>>bumen;
	return bumen;
}
string t::outzhicheng()
{
    cout<

(2)按要求阅读、编辑、编译、调试和运行以下程序。

(1) 阅读、编辑、编译、调试和运行以下程序,并写出程序的运行结果。

  #include

  #include

  using namespace std;

  class MyArray              //声明一个基类MyArray

  {

    public:

          MyArray(int leng);      //构造函数

          ~MyArray();           //析构函数

          void Input();           //输入数据的成员函数

          void Display(string);    //输出数据的成员函数

    protected:

          int *alist;             //基类中存放一组整数

          int length;            //整数的个数

  };

  MyArray::MyArray(int leng)

  { if (leng<=0)

          {    cout<<”error length”;

                 exit(1);

          }

        alist=new int[leng];

        length=leng;

        if(alist==NULL)

        { cout<<”assign failure”;

             exit(1);

        }

        cout<<”MyArray类对象已创建。”<

  }

  MyArray::~MyArray()

   { delete[] alist;

         cout<<”MyArray类对象被撤销。”<

   }

 

  void MyArray::Input()

 {  cout<<”请从键盘输入”<

        int i;

        int *p=alist;

        for(i=0;i>*p;

 }

 

  void MyArray::Display(string str)

 { int i;

       int *p=alist;

       cout<

       for(i=0;i

       cout<

 }

 

 int main()

{        MyArray a(5);

      a.Input();

      a.Display(“显示已输入的”);

      return 0;

}

实验3 派生类与继承实验_第1张图片

(2)声明一个类SortArray继承类MyArray,在该类中定义一个函数sort,具有将输入的整数从小到大进行排序的功能。

#include
#include
#include
using namespace std;
class MyArray              //声明一个基类MyArray
{
    public:
	    MyArray(int leng);      //构造函数
        MyArray();
	    ~MyArray();           //析构函数
	    void Input();           //输入数据的成员函数
	    void Display(string);    //输出数据的成员函数
    protected:
	    int *alist;             //基类中存放一组整数
	    int length;            //整数的个数
};
MyArray::MyArray()
{}
MyArray::MyArray(int leng)
{ if (leng<=0)
	    {	cout<<"error length";
		    exit(1);
	    }
	  alist=new int[leng];
	  length=leng;
	  if(alist==NULL)
	  { cout<<"assign failure";
		exit(1);
	  }
	  cout<<"MyArray类对象已创建。"<>*p;
}
void MyArray::Display(string str)
{ int i;
	 int *p=alist;
	 cout<*(p+1))
            swap(*p,*(p+1));
        }
    }
}
int main()
{ 	SortArray a(5);
	a.Input();
	a.Display("显示已输入的");
    a.sort();
    a.Display("显示排序后:");
	return 0;
}

(3)声明一个类AverArray继承类MyArray,在该类中定义一个函数aver,具有求输入整数平均值的功能。

#include
#include
#include
using namespace std;
class MyArray              //声明一个基类MyArray
{
    public:
	    MyArray(int leng);      //构造函数
        MyArray();
	    ~MyArray();           //析构函数
	    void Input();           //输入数据的成员函数
	    void Display(string);    //输出数据的成员函数
    protected:
	    int *alist;             //基类中存放一组整数
	    int length;            //整数的个数
};
MyArray::MyArray()
{}
MyArray::MyArray(int leng)
{ if (leng<=0)
	    {	cout<<"error length";
		    exit(1);
	    }
	  alist=new int[leng];
	  length=leng;
	  if(alist==NULL)
	  { cout<<"assign failure";
		exit(1);
	  }
	  cout<<"MyArray类对象已创建。"<>*p;
}
void MyArray::Display(string str)
{ int i;
	 int *p=alist;
	 cout<

(4)声明一个类ASArray继承类MyArray,包含有上述函数sort和aver的功能。

#include
#include
#include
using namespace std;
class MyArray              //声明一个基类MyArray
{
    public:
	    MyArray(int leng);      //构造函数
        MyArray();
	    ~MyArray();           //析构函数
	    void Input();           //输入数据的成员函数
	    void Display(string);    //输出数据的成员函数
    protected:
	    int *alist;             //基类中存放一组整数
	    int length;            //整数的个数
};
MyArray::MyArray()
{}
MyArray::MyArray(int leng)
{ if (leng<=0)
	    {	cout<<"error length";
		    exit(1);
	    }
	  alist=new int[leng];
	  length=leng;
	  if(alist==NULL)
	  { cout<<"assign failure";
		exit(1);
	  }
	  cout<<"MyArray类对象已创建。"<>*p;
}
void MyArray::Display(string str)
{ int i;
	 int *p=alist;
	 cout<*(p+1))
            swap(*p,*(p+1));
        }
    }
}
int ASArray::aver()
{
    int i,j;
    int *p;
    double sum=0,ave;
    p=alist;
    for(i=0;i

(3)People类是教师类Teacher和干部类Cader的虚基类。

People类的数据成员:name(姓名)、age(年龄)、sex(性别)、add(地址) 、tel(电话)

Teacher类的数据成员:name(姓名)、age(年龄)、sex(性别)、add(地址) 、tel(电话)、title(职称)

Cader类的数据成员:name(姓名)、age(年龄)、sex(性别)、add(地址) 、tel(电话)、post(职务)

Teacher_Cader类是Teacher类和Cader类的派生类,并新增数据成员wages(工资)

 

int main()

{ Teacher_Cader  ob1(“李明”,30,“男”,  ”淮北师范大学”,3803333,“讲师”,“科长”,4500),ob2 ;

  ................................

/*People类是教师类Teacher和干部类Cader的虚基类。
People类的数据成员:name(姓名)、age(年龄)、sex(性别)、add(地址) 、tel(电话)
Teacher类的数据成员:name(姓名)、age(年龄)、sex(性别)、add(地址) 、tel(电话)、title(职称)
Cader类的数据成员:name(姓名)、age(年龄)、sex(性别)、add(地址) 、tel(电话)、post(职务)
Teacher_Cader类是Teacher类和Cader类的派生类,并新增数据成员wages(工资)

int main()
{ Teacher_Cader  ob1(“李明”,30,“男”,  ”淮北师范大学”,3803333,“讲师”,“科长”,4500),ob2 ;
*/
#include
#include
#include
using namespace std;
class Teacher
{
    private:
    string name;//姓名
    int age;//年龄
    string sex;//性别
    string add;//地址
    string tel;//电话
    string title;//职称
    public:
    Teacher();
    int input_teacher(); 
    void output_teacher(); 
    Teacher(string name,int age,string sex,string add,string tel,string title)
    {
    cout<<"Teacher对象构建成功"<>title;
	return 0;
}
void Teacher::output_teacher()
{
	cout<<"职称:"<>post;
	return 0;
}
void Cader::output_cader()
{
	cout<<"职务:"<>People::name;
	cout<<"年龄:";
	cin>>People::age;
	cout<<"性别:";
	cin>>People::sex;
	cout<<"地址:";
	cin>>People::add;
	cout<<"电话:";
	cin>>People::tel;
	return 0;
}
void People::output_people()
{
	cout<<"姓名:"<

 

你可能感兴趣的:(实验,C++,c++,编程语言,类)