派生类与继承实验报告
- 格式:doc
- 大小:2.04 MB
- 文档页数:20
西安财经学院信息学院《面向对象方法及程序设计》 实验报告实验名称 继承与派生 实验室 519 实验日期 12.23继承与派生一、实验目的与要求1. 进一步巩固C++语言中类和对象的概念和应用。
2. 掌握继承和派生的概念和实现。
3. 进一步熟练掌握类和对象的概念,使用的方法,访问的规则。
4. 掌握单继承的概念和应用。
5. 掌握多继承和虚基类的概念,并熟练应用。
二、实验内容1.根据如图所示编辑程序,计算教师的课时,计算学生的平均成绩,假定每个学生3门课程,并输出每个类的信息(例如教师的职称,学生的专业等,程序实现要求使用到虚基类的知识)。
2. 编写一个程序实现员工的工资管理。
该公司主要有4类人员,经理(manager ),销售经理(salesmanager),技术人员(technician),销售员(salesman)。
这些人员都是职员(employee ),有编号,姓名,月工资,工龄等信息。
月工资的计算方法为:经理固定月薪8000元,技术人员每小时工资100元,销售人员底薪为1000,然后加上每月的销售额的4%,销售经理底薪5000,然后加上本部门当月销售总额的千分之五。
要求编写程序计算该公司职员的月工资并输出到屏幕上。
(假定该公司1个经理,1个销售经理,3个技术人员,3个销售人员)三、实验环境 硬件环境:PC 一台姓名 学号 班级 年级 指导教师 李翠软件环境:WIN7操作系统、Microsoft visual c++ 2010 四、实验步骤五、实验结果六、小结通过本次实验,使我对继承与派生有了更深入的了解。
包括,虚基类以及虚基类与派生类的构造函数与析构函数的调用等等。
七、源程序清单内容1:#include"iostream"using namespace std;class person{};class teacher:virtual public person{public:int b;};class teacher1:virtual public teacher{public:teacher1(int B){b=B;cout<<"教授"<<endl;cout<<"课时:"<<b<<endl;}};class teacher2:virtual public teacher{public:teacher2(int D){b=D;cout<<"讲师"<<endl;cout<<"课时:"<<b<<endl;}};class teacher3:virtual public teacher{public:teacher3(int F){b=F;cout<<"研究生助教"<<endl;cout<<"课时:"<<b<<endl;}};class student:public person{public:float a1,a2,a3;};class student1:public student{public:student1(float b1,float b2,float b3){a1=b1;a2=b2;a3=b3;cout<<"英语:"<<a1<<endl;cout<<"数据库:"<<a2<<endl;cout<<"java:"<<a3<<endl;}};class student2:public student{public:student2(float b1,float b2,float b3){a1=b1;a2=b2;a3=b3;cout<<"本科生:"<<endl;cout<<"英语:"<<a1<<endl;cout<<"组成原理:"<<a2<<endl;cout<<"c++:"<<a3<<endl;}};class student3:public student{public:student3(float b1,float b2,float b3){a1=b1;a2=b2;a3=b3;cout<<"专科生:"<<endl;cout<<"英语:"<<a1<<endl;cout<<"c语言:"<<a2<<endl;cout<<"数字电路:"<<a3<<endl;}};class zhuyan:public teacher3,public student1{public:zhuyan(int x,float a,float b,float c):teacher3(x),student1(a,b,c) {}};int main(){teacher1 q(50);teacher2 w(70);student2 e(75,82,100);student3 r(78,79,87);zhuyan t(80,70,78,81);system("pause");return 0;}内容2:#include <iostream>using namespace std;class employee{public:employee(){cout<<"编号:";cin>>number;cout<<"姓名:";cin>>name;salary=0;}protected:char number[5];char name[10];double salary;};class manager:public employee{public:manager(){monthlypay=8000;salary=monthlypay;}void print(){cout<<"经理:"<<name<<"编号:"<<number<<"本月工资:"<<salary<<endl;} protected:int monthlypay;};class technician:public employee{public:technician(){weekpay=100;}void pay(){cout<<name<<"工作时间:";cin>>workhour;salary=workhour*100;}void print(){cout<<"技术人员:"<<name<<"编号:"<<number<<"本月工资:"<<salary<<endl;} protected:int weekpay;int workhour;};class salesman:public employee{public:salesman(){basicsalary=1000;commrate=0.04;}void pay(){cout<<name<<"本月销售额:";cin>>sales;salary=basicsalary+sales* commrate;}void print(){cout<<"销售员:"<<name<<"编号:"<<number<<"本月工资:"<<salary<<endl;} protected:int basicsalary;double commrate;double sales;};class salesmanager:public salesman{public:salesmanager(){monthlypay=5000;commrate=0.005;}void pay(){cout<<name<<"本月部门销售额:";cin>>sales;salary=monthlypay+sales* commrate;}void print(){cout<<"销售经理:"<<name<<"编号:"<<number<<"本月工资:"<<salary<<endl;} private:double monthlypay;};int main(){manager obj1;obj1.print();technician obj2,obj3,obj4;obj2.pay(); obj2.print();obj3.pay(); obj3.print();obj4.pay(); obj4.print();salesman obj5,obj6,obj7;obj5.pay(); obj5.print();obj6.pay(); obj6.print();obj7.pay(); obj7.print();salesmanager obj8;obj8.pay(); obj8.print();system("pause"); }。
实验九:继承与派生一、实验目的与要求(1)了解Visual C++ 6.0 的特点(2)熟悉Visual C++6.0 的开发环境(3)学习用Visual C++6.0编写标准的C++控制台程序(4)掌握类的继承与派生的应用。
二、实验类型设计型实验。
三、实验原理及说明1、声明一个基类Animal,有私有整形成员变量age,构造其派生类dog,在其成员函数SetAge (int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。
2、完成P251 7-10题编程,上机实现。
3、完成P251 7-9题编程,上机实现。
五、实验内容和步骤1、启动VC++ 6.0 开发环境2、创建一个C++源程序文件3 建立并运行可执行文件4 关闭工作空间六、实验数据处理与分析七、注意事项八、实验报告要求完成程序验证,正确书写试验报告。
九、预习与思考题类的继承与派生。
1.声明一个基类Animal,有私有整形成员变量age,构造其派生类dog,在其成员函数SetAge (int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看#include<iostream>using namespace std;class Animal{public:int age;};class dog : public Animal{public:void SetAge(int n){age=n;cout<<"age="<<age<<endl;}};void main(){dog a;a.SetAge(3);}2.完成P251 7-10题编程,上机实现#include<iostream>using namespace std;class object{int weight;public:object(int n){cout<<"调用object的构造函数"<<endl;weight=n;cout<<"weight="<<weight<<endl;}~object(){cout<<"调用object的析构函数"<<endl;}};class box : public object{int height,width;public:box(int a,int b,int c):object(a){cout<<"调用box的构造函数"<<endl;height=b;width=c;cout<<"height="<<height<<" width="<<width<<endl;}~box(){cout<<"调用box的析构函数"<<endl;}};void main(){box s(1,2,3);}3、完成P251 7-9题编程,上机实现。
第一节类的继承与派生一、基本概念继承是面向对象程序设计的一个特性,所谓继承就是在已有类的基础上创建新的类,新类可以从一个或多个已有类中继承成员函数或数据成员,而且新类还可以重新定义或加进新的数据和函数。
其中,已有类称为基类或父类,新类称为派生类或子类。
在现实世界中许多事物都具有继承性。
例如:“汽车”这个类中包括了许多类型,有运输汽车、专用汽车;运输汽车中又包括客车、货车…….;专用汽车中又包括巡逻车、消防车、救护车……..;所有这些类型的车都具有汽车的共同特性即都有发动机、车身、轮胎等共性,还都是自行驱动的。
而客车和货车又有所不同,客车用来载客,货车用来拉货,它们有自己不同于其它车的特性,这就是继承。
我们把汽车称为基类,把运输汽车、客车、货车称为派生类。
通过继承,派生类不仅拥有了基类的属性和行为,而且具有不同于它类的自己的特点。
二、派生类的定义与构成当你去水果店买水果的时候,你经常会发现很多同类水果又有了新的品种。
比如,“李子”既小又涩,嫁接在梨树上后长出来的李子却硕大、香甜、清脆,比没有嫁接的李子好吃,但它还是李子家族中的一员;所以,可以认为“嫁接李子”是从“李子”中派生出来的。
当然,可以把“李子”嫁接在梨树上,也可以嫁接在苹果树上,结出来的都是“李子”,但是各自味道不同。
所谓派生就是从已有类中产生一个新的子类。
基类就是已存在的可以派生新类的类,如下图中的A、D、E都是基类。
派生类就是由基类派生出来的新类,如下图中的B、C、F都是派生类。
1. 单继承派生类的定义格式class <派生类名> : <继承方式> <基类名>{派生类成员的定义;};其中,“派生类名”是新定义的一个类的名字,它是从“基类名”中派生的,并且按指定的“继承方式”派生。
例如:class peach 多继承派生类的定义格式class <派生类名> :<继承方式1> <基类名>,<继承方式2> <基类名>, …….{派生类成员的定义;};多继承与单继承在定义格式的区别仅在于它们的基类个数不同,单继承的基类只有一个,而多继承的基类有多个,相邻两个基类之间用逗号间隔,每个基类名前都应有一个该基类的继承方式的说明符。
《C++程序设计》实验报告Exercise7继承与派生1实验目的(1)学习定义和使用类的继承关系,定义派生类。
(2)熟悉不同继承方式下对基类成员的访问控制。
(3)学习利用虚基类解决二义性问题。
2实验要求(1)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还回有问题吗?编程试之。
源程序代码:#include<iostream>using namespace std;class Animal{public:Animal(){age=0;cout<<"构造了Animal对象"<<endl;}~Animal(){cout<<"析构了Animal对象"<<endl;}void display(){cout<<"Its age is"<<age<<"years old"<<endl;}int age;};class Dog:public Animal{public:Dog(){cout<<"构造了Dog对象"<<endl;}~Dog(){cout<<"析构了Animal对象"<<endl;}int setAge(int n){age=n;return age;}};int main(){Dog mimi;mimi.setAge(3);mimi.display();return0;}运行结果:(2)定义一个基类BaseClass,有整型变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。
继承与派生类上机实践指导一.实验目的1.理解继承的含义,掌握派生类的定义方法和实现;2.理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;3.理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;二.实验内容1. (1) 将例5.3的程序修改、补充,写成一个完整、正确的程序,用保护继承方式。
在程序中应包括输入数据的函数。
(2) 修改例5.3的程序,改为用公用继承方式。
上机调试程序,使之能正确运行并得到正确的结果。
对这两种继承方式作比较分析,考虑在什么情况下二者不能互相代替。
2. 调试运行Ex12.1需求分析:某小型公司的人员管理信息系统。
三类人员:经理(manager)、技术人员(technician)、销售人员(salesman);后期又增加一类人员:销售经理(sales_manager)。
要求存储这些人员的姓名、编号、级别、当月工资、计算月薪总额并显示全部信息。
(1)人员编号:基数为1000,每增加一名人员时,人员编号加1;(2)人员级别:所有人员初始级别为1,然后进行升级。
升级规则:经理为4级、技术人员为3级、销售人员为1级、销售经理为3级;(3)月薪计算:经理=固定月薪8000元;技术人员=100元/小时;销售人员=当月个人销售额*4%;销售经理=固定月薪5000+所辖部门当月销售额*5%。
2.2数据结构:struct employee {char *name; /* 人员姓名*/int indiveidualEmpNo; /* 人员编号*/int grade; /* 人员级别*/float accumPay; /* 月薪总额*/char employeeType; /* 人员类型(经理、技术人员、销售人员)};2.3 再考虑用三个过程分别负责升级、计算月薪和显示人员信息。
我们可以三个C 函数: Promote ()Pay ()DisplayStatus ()这种数据结构与过程分离有很多问题,例如增加一类人员---销售经理,则三个C 函数都必须重新编写。
实验四派生类与继承
【实验类型】验证性实验【实验课时】2学时【实验目的】
(1)理解类的继承的概念,能够定义和使用类的继承关系。
(2)掌握派生类的声明与定义方法。
(3)熟悉公有派生和私有派生的访问特性。
(4)学习虚基类在解决二义性问题中的作用。
【实验环境】
硬件:计算机
软件:Microsoft Visual C++
【实验内容】
1、按要求阅读、编写、调试和运行以下程序。
(1)实验内容
①定义一个基类MyArray,基类中可以存放一组整数。
class MyArray
{public:
MyArray(int leng);
~MyArray();
void Input();
void Display();
protected:
long int *alist; 验题目
ⅱ.实验目的
ⅲ.实验过程(含程序代码)
ⅳ.实验结果
ⅴ.实验思考题
②验报告书写要整洁、有条理。
实验四C++中的继承与派生一、实验目的:1.理解C++中继承与派生的概念;2.掌握C++中各种不同继承方式的访问属性差别;3.掌握单继承与多继承的实现方法;4.掌握派生类构造函数与析构函数的实现及调用顺序;5.掌握虚基类的使用方法。
二、实验任务【题目】小型公司人员管理某小型公司有四类人员:经理、技术人员、销售经理、销售员。
设计一个基类employee,派生出manager(经理)、technician(技术人员)、salesmanager(销售经理)、saleman(销售员)。
销售经理既是经理又是销售员,兼具两类人员的特点,因此同时继承manager 和salesman 两个类。
1、类定义1)employee 类:基本信息:编号、姓名、性别、出生日期、职位、薪水等;出生日期使用自定义的Date (日期)类;2)Date 类:成员变量:年、月、日3)派生类technician:新增属性:工作时间派生类saleman:新增属性:销售额、所属部门2、实现人员信息的录入与显示;3、计算并显示个人月薪:月薪计算办法:总经理拿固定月薪8000 元,技术人员按每小时25 元领取月薪;推销员的月薪按当月销售额的4%提成;销售经理固定月薪5000 元加所管辖部门当月销售总额的5‰。
【提示】1、在基类中,除了定义构造函数和析构函数,还应统一定义对各类人员信息应有的操作,规范类族中各派生类的基本行为,但是各类人员的月薪计算方法不同,不能在基类employee 中统一确定计算方法。
各类人员信息的显示内容不同,同样不能在基类employee中统一确定显示方法。
在基类中实现上述功能的函数体应为空,在派生类中根据同名覆盖原则定义各自的同名函数实现具体功能。
代码:#include<iostream>#include<string>using namespace std;class Date{private:int year;int month;int day;public:void SetYear(int x) {year=x;}void SetMonth(int x) {month=x;}void SetDay(int x) {day=x;}int GetYear() {return year;}int GetMonth() {return month;}int GetDay() {return day;}};class employee{protected:int num;string nam;string sex;Date birth;string position ;float salary;public:void display(){cout<<"编号:"<<num<<"姓名:"<<nam<<"性别:"<<sex<<"出生日期:"<<birth. GetYear()<<"-"<<birth.GetMonth()<<"-"<<birth.GetDay()<<"职位:"<<position;}};class manager:virtual public employee{public:void set_manager(int n,string na,string se,int y,int m,int d,string pos){num=n;nam=na;sex=se;birth.SetYear(y);birth.SetMonth(m);birth.SetDay(d);position=pos;}void display(){employee::display();}void total_salary(){ salary=8000;cout<<"经理月薪:";cout<< salary<<"元";}};class technician:virtual public employee{protected:float Time;public:float t;void set_technician(int n,string na,string se,int y,int m,int d,string pos,float t) { num=n;nam=na;sex=se;birth.SetYear(y);birth.SetMonth(m);birth.SetDay(d);position=pos;Time=t;}void display(){ employee::display();cout<<"工作时间:"<<Time<<endl;}void total_salary(){salary= 25*Time;cout<<"技术人员月薪:" ;cout<< salary<<"元";}};class saleman :virtual public employee{protected:float sale;string dep;public:void set_saleman(int n,string na,string se,int y,int m,int d,string pos,float sale1,string de) {num=n;nam=na;sex=se;birth.SetYear(y);birth.SetMonth(m);birth.SetDay(d);position=pos;sale=sale1;dep=de;}void display(){employee::display();cout<<position<<"销售额:"<<sale<<"所属部门:"<<dep<<endl;}void total_salary (){salary=sale*0.04;cout<<"销售员月薪:"<<salary<<"元";}};class salesmanager:public manager,public saleman{public:void total_salary (){salary=sale*0.05+5000;cout<<"销售经理月薪:" << salary<<"元";}};int main (){manager m1;technician tec;saleman s;salesmanager sg;int n,y,m,d,choose,choose1;string str,se, p;cout<<"\n\t\t================================================="<<endl;cout<<"\t\t1:输入信息与显示2:个人月薪0:退出"<<endl;cout<<"\t\t=================================================="<<endl;cout<<"\n输入您要进行的操作:";cin>>choose;while(choose!=0){switch(choose){case 1:cout<<"输入员工编号:";cin>>n;cout<<"输入员工出生日期:";cin>>y>>m>>d;cout<<"输入员工姓名:";cin>>str;cout<<"输入员工性别:";cin>>se;cout<<"输入员工职位:";cin>>p;if (p=="manager"){m1.set_manager( n, str, se,y,m,d,p);m1.display();}else if(p=="technician"){float t;cout<<"输入时间:";cin>>t;tec.set_technician( n,str, se,y,m,d, p, t) ;tec.display();}else if(p=="saleman"){float sale2;string de;cout<<"销售额:" ;cin >> sale2;cout<<"所属部门:";cin>>de ;s.set_saleman( n, str, se,y,m,d, p, sale2, de);s.display();}else{float sale1;string de;cout<<"销售额:" ;cin>>sale1;cout<<"所属部门:";cin>>de ;sg.set_saleman( n,str, se,y,m,d, p, sale1, de) ;s.display();}break;case 2:cout<<"\n\t\t===================================================="<<endl;cout<<"\t\t11: 经理12: 技术人员13:销售员14:销售经理"<<endl;cout<<"\t\t============================================================"< <endl;cout<<"\n输入您要进行的操作:";cin>>choose1;while(choose1!=0){ switch(choose1){case 11:m1.total_salary();break;case 12:tec.total_salary();break;case 13:s.total_salary();break;case 14:sg.total_salary();break;}choose1=0;}break;}cout<<"\n\t\t=================================================="<<endl;cout<<"\t\t1:输入信息与显示2:个人月薪0:退出"<<endl;cout<<"\t\t=================================================="<<endl;cout<<"\n输入您要进行的操作:";cin>>choose;}return 0;}。
实验5继承与派生北京电子科技学院(BESTI)实验报告课程:面向对象程序设计班级:1243 姓名:孟愫愫学号:124308成绩:指导教师:徐日实验日期:2013.12.3实验密级:预习程度:实验时间:下午3:30~6:00 仪器组次:B23 必修/选修:选修实验序号: 5实验名称:继承与派生实验目的与要求:1. 使学生掌握C++语言类的继承和派生的基础编程;2. 培养学生具有运用C++语言编程解决问题的能力,提高学生的计算机编程能力;3. 引导和培养学生具有认真严谨的实验态度和勇于实践的学习精神。
实验仪器:名称型号数量微机TOSHIBA L8001一.实验内容1. 类Point、类Circle和Cylinder首先定义类Point,然后定义类Point的公有派生类Circle,再定义类Circle 的公有派生类Cylinder。
类Point有数据成员int型的x和y,用于表示点的坐标位置,有成员函数p_show()、构造函数和析构函数、p_set(),p_show()用于显示输出点的坐标,p_set()用于设置x和y的值。
类Circle有新增私有数据成员float型的r和double 型的s,表示圆的半径和面积,有成员函数c_area()用于计算圆的面积并对s赋值,有成员函数c_set()用于对成员r赋值,有成员函数c_show()用于显示输出半径r和面积s,有成员函数getr()用于获取半径r的值,有构造函数和析构函数。
类Cylinder有新增数据成员float型的h和double型的bs、v,分别表示圆柱体的高、表面积、体积,有对成员h赋值的成员函数cy_set(),有计算表面积并对bs赋值的成员函数cy_area(),有计算体积并对v赋值的成员函数volume(),有成员函数cy_show()用于显示输出高h、表面积bs和体积v,有构造函数和析构函数。
在主函数main()中分别定义Point、Circle、Cylinder类的对象,观察并记录各类所属的构造函数和析构函数的执行情况,然后在main()函数中通过调用成员函数对各类的对象的所有数据成员(包括继承所得)赋值并输出显示其值。
洛阳理工学院实验报告 系别 计算机与信息工程系 班级 B11050 学号 B11050 姓名
课程名称 C++面向对象与程序设计 实验日期 2013.10.8 实验名称 派生类与继承 成绩 实验目的: 1、 掌握派生类的声明方法和派生类构造函数的定义方法; 2、 掌握不同继承方式下,基类成员在派生类中的访问属性; 3、 掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则; 4、 学习虚基类在解决二义性问题中的作用。
实验条件: 装有Microsoft Visual C++6.0软件的计算机
实验内容: 1.输入下列程序。 //test4_1.cpp #include using namespace std; class Base{ public: void setx(int i) {x=i;} Int getx() {return x;} public: int x; }; class Derived:public Base{ public: void sety(int i) {y=i;} int gety() {return y;} void show() {cout<<”Base::x=”<} public: inty; }; int main() {Derived bb; bb,setx(16); bb.sety(25); bb.show(); cout<<”Base::x=” 写出程序的运行结果。 (2) 按以下要求,对程序进行修改后再调试,指出调试中出错的原因。 ①将基类Base中数据成员x的访问权限改为private时,会出现哪些错误?为什么? ②将基类Base中数据成员x的访问权限改为protected时,会出现哪些错误?为什么? ③在源程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?为什么? ④在源程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?为什么? 解答如下; ①将基类Base中数据成员x的访问权限改为private时,会出现哪些错误?为什么? 因为基类Base中数据成员x的访问权限改为private时,基类的私有成员在派生类中并没有成为派生类的私有成员,使得再通过派生类的对象调用x时,不能被系统所识别,出现了错误。 ②将基类Base中数据成员x的访问权限改为protected时,会出现哪些错误?为什么? 因为基类Base中数据成员x的访问权限改为protected时,公用基类的保护成员在公用派生类中的访问属性仍然是保护,在公用派生类外就不能通过公用派生类的对象访问该成员,所以出现了错误。 ③在源程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?为什么? 将派生类Derived的继承方式改为private时,私有基类中的公用成员在私有派生类中的访问属性为私有,在类外不能通过对象调用私有成员,只能通过成员函数调用. ④在源程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?为什么? 因为私有继承时基类中的公有函数到派生类中一是私有成员,不能通过对象访问,只能通过成员函数来访问。 2.编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。 供参考的类结构如下: class Person{ ... }; class Student:public Person{ ... }; class Teacher:public Person{ ... }; 程序代码: #include #include using namespace std; class Person {public: Person(int n,string nam,char s,int a) {num=n; name=nam; sex=s; age=a; } ~Person(){} protected: int num; string name; char sex; int age; }; class Student:public Person {public: Student(int n,string nam,char s,int a,string ap,int sc):Person( n,nam, s, a) {apart=ap; score=sc; } void show1() {cout<<"num:" (4)结果分析:注意构造函数和派生类调用基类的构造函数赋值,在后面对新增的参数初始化,通过对象赋值后再对其输出。 3.按要求阅读、编辑、编译、调试和运行以下程序。 (1) 阅读、编辑、编译、调试和运行以下程序,并写出程序的运行结果。 //test4_3_1.cpp #include #include using namespace std; class 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::Display(string str) {int i; int *p=alist; cout<