实验6 继承与派生
实验6 继承与派生

实验6 继承与派生实验时间:2012年10月18日,星期四,3、4节地点:5428实验目的(1)了解继承在面向对象程序设计中的重要作用(2)进一步理解继承与派生的概念(3)掌握通过继承派生出一个新类的方法(4)了解虚基类的作业和用法主要仪器设备电脑一台,安装Visual C++ 6.0实验内容分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。
要求:(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。
(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务)。
在Teacher_Cadre类中包含数据成员wages(工资)。
(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。
(4)在类体中声明成员函数,在类外定义成员函数。
(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display 函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。
参考代码#include<string>#include <iostream>using namespace std;class Teacher{public:Teacher(string nam,int a,char s,string tit,string ad,string t);void display();protected:string name;int age;char sex;string title;string addr;string tel;};Teacher::Teacher(string nam,int a,char s,string tit,string ad,string t): name(nam),age(a),sex(s),title(tit),addr(ad),tel(t){ }void Teacher::display(){cout<<"name:"<<name<<endl;cout<<"age"<<age<<endl;cout<<"sex:"<<sex<<endl;cout<<"title:"<<title<<endl;cout<<"address:"<<addr<<endl;cout<<"tel:"<<tel<<endl;}class Cadre{public:Cadre(string nam,int a,char s,string p,string ad,string t);void display();protected:string name;int age;char sex;string post;string addr;string tel;};Cadre::Cadre(string nam,int a,char s,string p,string ad,string t):name(nam),age(a),sex(s),post(p),addr(ad),tel(t){}void Cadre::display(){cout<<"name:"<<name<<endl;cout<<"age:"<<age<<endl;cout<<"sex:"<<sex<<endl;cout<<"post:"<<post<<endl;cout<<"address:"<<addr<<endl;cout<<"tel:"<<tel<<endl;}class Teacher_Cadre:public Teacher,public Cadre{public:Teacher_Cadre(string nam,int a,char s,string tit,string p,string ad,string t,float w);void show( );private:float wage;};Teacher_Cadre::Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,string tel,float w):Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w) {}void Teacher_Cadre::show( ){Teacher::display();cout<<"post:"<<Cadre::post<<endl;cout<<"wages:"<<wage<<endl;}int main( ){Teacher_Cadre te_ca("Wang-li",50,'f',"prof.","president","135 Beijing Road,Shanghai","(021)61234567",1534.5);te_ca.show( );return 0;}。
C++继承与派生实验报告精编版

应用数学学院信息与计算科学(信息计算)专业1 班、学号3111008106姓名吴伟栓教师评定_________________实验题目继承与派生一、实验目的与任务实验目的:(1)学习声明和使用类的继承关系,声明派生类。
(2)熟悉不同继承方式下对基类成员的访问控制。
(3)学习利用虚基类解决二义性问题。
实验任务:(1)声明一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。
(2)声明一个基类BaseClass,有整形成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。
(3)声明一个车(vehicle)基类,具有MaxSpeed,Weight等成员变量,Run,Stop 等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)类。
自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。
从bicycle 和motorcar派生出摩托车(motocycle)类,在继承过程中,注意把vehicle设置为虚基类。
如果不把vehicle设置为虚基类,会有什么问题?编程试试看。
(4)(选做)从实验六中的people(人员)类派生出student(学生)类,添加属性:班号char classNo[7];从people类派生出teacher(教师)类,添加属性:职务char principalship[11]、部门char department[21]。
从student类中派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacherradviser;从graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。
实验六继承与派生之欧阳理创编

继承与组合一、实验目的1.了解继承在面向对象程序设计中的重要作用。
2.进一步理解继承与派生的概念。
3.掌握通过继承派生出一个新的类的方法。
4.了解虚基类的作用和用法。
5.掌握类的组合二、实验内容1.请先阅读下面的程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。
(1)#include <iostream>using namespace std;class A{public:A(){cout<<"A::A() called.\n";}virtual ~A(){cout<<"A::~A() called.\n";}};class B:public A{public:B(int i){ cout<<"B::B() called.\n";buf=new char[i];}virtual ~B(){ delete []buf;cout<<"B::~B() called.\n";}private:char *buf;};void fun(A *a){ cout<<"May you succeed!"<<endl;delete a;}int main(){A *a=new B(15);fun(a);return 0;}1、(1)程序运行结果:A::A() called.B::B() called.May you succeed!B::~B() called.A::~A() called.(2)#include<iostream>using namespace std;class A{public:A(int a,int b):x(a),y(b){ cout<<"A constructor..."<<endl; }void Add(int a,int b){ x+=a;y+=b;}void display(){ cout<<"("<<x<<","<<y<<")";}~A(){cout<<"destructor A..."<<endl;}private:int x,y;};class B:private A{private:int i,j;A Aobj;public:B(int a,int b,int c,int d):A(a,b),i(c),j(d) ,Aobj(1,1){ cout<<"B constructor..."<<endl;}void Add(int x1,int y1,int x2,int y2){A::Add(x1,y1);i+=x2; j+=y2;}void display(){A::display();Aobj.display();cout<<"("<<i<<","<<j<<")"<<endl;}~B(){cout<<"destructor B..."<<endl;}};int main(){B b(1,2,3,4);b.display();b.Add(1,3,5,7);b.display();return 0;}(2)程序运行结果:A constructor...A constructor...B constructor...(1,2) (1,1) (3,4)(2,5) (1,1) (8,11)destructor B...destructor A...destructor A...(3)#include<iostream>using namespace std;class A{public:A(int a):x(a){ cout<<"A constructor..."<<x<<endl; }int f(){return ++x;}~A(){cout<<"destructor A..."<<endl;}private:int x;};class B:public virtual A{private:int y;A Aobj;public:B(int a,int b,int c):A(a),y(c),Aobj(c){ cout<<"B constructor..."<<y<<endl;}int f(){A::f();Aobj.f();return ++y;}void display(){cout<<A::f()<<"\t"<<Aobj.f()<<"\t"<<f()<<endl; }~B(){cout<<"destructor B..."<<endl;}};class C:public B{public:C(int a,int b,int c):B(a,b,c),A(0){ cout<<"C constructor..."<<endl;}};class D:public C,public virtual A{public:D(int a,int b,int c):C(a,b,c),A(c){ cout<<"D constructor..."<<endl;}~D(){cout<<"destructor D..."<<endl;}};int main(){D d(7,8,9);d.f();d.display();return 0;}(3)程序运行结果:A constructor (9)A constructor (9)B constructor (9)C constructor...D constructor...12 12 11destructor D...destructor B...destructor A...destructor A...(4)#include <iostream>using namespace std;class Base1{public:Base1(){cout<<"class Base1!"<<endl;}};class Base2{public:Base2(){cout<<"class Base2!"<<endl;}};class Level1:public Base2,virtual public Base1 {public:Level1(){cout<<"class Level1!"<<endl;}};class Level2: public Base2,virtual public Base1{public:Level2(){cout<<"class Level2!"<<endl;}};class TopLevel:public Level1,virtual public Level2{public:TopLevel(){cout<<"class TopLevel!"<<endl;}};int main(){TopLevel obj;return 0;}(4)程序运行结果:class Base1!class Base12class Leve12!class Base2!class Leve11!class TopLeve1!2.某出版系统发行图书和磁带,利用继承设计管理出版物的类。
(C++)实验报告六:继承与派生

实验6 继承与派生一、实验目的1.理解继承与派生、单继承与多继承的概念;2.理解基类与派生类的定义及使用方法,派生类对象的定义与初始化方法;3.理解继承与派生过程中,把派生类作为基类构成类族的概念及虚基类的概念。
二、实验环境一台PC机,Windows XP操作系统,Visual C++ 6.0开发环境。
三、实验内容1、由在校人员类(Person)作为基类派生出学生类(Student):实验步骤:#include <iostream>#include <string>using namespace std;class Person{public:Person(int i,char *n, char s, int a){ID=i;name=n;sex=s;age=a;};int getID(){return ID;}void show(){cout<<"ID: "<<ID<<endl;cout<<"name : "<<name<<endl;cout<<"sex: "<<sex<<endl;cout<<"age: "<<age<<endl;}private:int ID;string name;char sex;int age;};class Student:public Person{public:Student(int i,char *n,char s,int a,float m,float p,float e,float c):Person(i,n,s,a){math=m;physical=p;english=e;cpp=c;total=math+physical+english+cpp;}void show(){Person::show();cout<<"math: "<<math<<endl;cout<<"physical: "<<physical<<endl;cout<<"english: "<<english<<endl;cout<<"C++: "<<cpp<<endl;cout<<"total: "<<total<<endl;}private:float math,physical,english,cpp,total;};void main(){Person p1(1,"张帅",'M',22);p1.show();cout<<endl;Student s1(9901,"林维",'S',21,65,70,75,88);s1.show();}实验结果:2、由学生类、课程类作为基类,共同派生出选课类。
实验六继承与派生之欧阳光明创编

继承与组合欧阳光明(2021.03.07)一、实验目的1.了解继承在面向对象程序设计中的重要作用。
2.进一步理解继承与派生的概念。
3.掌握通过继承派生出一个新的类的方法。
4.了解虚基类的作用和用法。
5.掌握类的组合二、实验内容1.请先阅读下面的程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。
(1)#include <iostream>using namespace std;class A{public:A(){cout<<"A::A() called.\n";}virtual ~A(){cout<<"A::~A() called.\n";}};class B:public A{public:B(int i){ cout<<"B::B() called.\n";buf=new char[i];}virtual ~B(){ delete []buf;cout<<"B::~B() called.\n";}private:char *buf;};void fun(A *a){ cout<<"May you succeed!"<<endl;delete a;}int main(){A *a=new B(15);fun(a);return 0;}1、(1)程序运行结果:A::A() called.B::B() called.May you succeed!B::~B() called.A::~A() called.(2)#include<iostream>using namespace std;class A{public:A(int a,int b):x(a),y(b){ cout<<"A constructor..."<<endl; }void Add(int a,int b){ x+=a;y+=b;}void display(){ cout<<"("<<x<<","<<y<<")";}~A(){cout<<"destructor A..."<<endl;}private:int x,y;};class B:private A{private:int i,j;A Aobj;public:B(int a,int b,int c,int d):A(a,b),i(c),j(d) ,Aobj(1,1){ cout<<"B constructor..."<<endl;}void Add(int x1,int y1,int x2,int y2){A::Add(x1,y1);i+=x2; j+=y2;}void display(){A::display();Aobj.display();cout<<"("<<i<<","<<j<<")"<<endl;}~B(){cout<<"destructor B..."<<endl;}};int main(){B b(1,2,3,4);b.display();b.Add(1,3,5,7);b.display();return 0;}(2)程序运行结果:A constructor...A constructor...B constructor...(1,2) (1,1) (3,4)(2,5) (1,1) (8,11)destructor B...destructor A...destructor A...(3)#include<iostream>using namespace std;class A{public:A(int a):x(a){ cout<<"A constructor..."<<x<<endl; }int f(){return ++x;}~A(){cout<<"destructor A..."<<endl;}private:int x;};class B:public virtual A{private:int y;A Aobj;public:B(int a,int b,int c):A(a),y(c),Aobj(c){ cout<<"B constructor..."<<y<<endl;}int f(){A::f();Aobj.f();return ++y;}void display(){cout<<A::f()<<"\t"<<Aobj.f()<<"\t"<<f()<<endl; }~B(){cout<<"destructor B..."<<endl;}};class C:public B{public:C(int a,int b,int c):B(a,b,c),A(0){ cout<<"C constructor..."<<endl;} };class D:public C,public virtual A{public:D(int a,int b,int c):C(a,b,c),A(c){ cout<<"D constructor..."<<endl;} ~D(){cout<<"destructor D..."<<endl;}};int main(){D d(7,8,9);d.f();d.display();return 0;}(3)程序运行结果:A constructor (9)A constructor (9)B constructor (9)C constructor...D constructor...12 12 11destructor D...destructor B...destructor A...destructor A...(4)#include <iostream>using namespace std;class Base1{public:Base1(){cout<<"class Base1!"<<endl;}};class Base2{public:Base2(){cout<<"class Base2!"<<endl;}};class Level1:public Base2,virtual public Base1{public:Level1(){cout<<"class Level1!"<<endl;}};class Level2: public Base2,virtual public Base1{public:Level2(){cout<<"class Level2!"<<endl;}};class TopLevel:public Level1,virtual public Level2{public:TopLevel(){cout<<"class TopLevel!"<<endl;}};int main(){TopLevel obj;return 0;}(4)程序运行结果:class Base1!class Base12class Leve12!class Base2!class Leve11!class TopLeve1!2.某出版系统发行图书和磁带,利用继承设计管理出版物的类。
实验6 类的继承与派生课前讲解

课前讲解—类的继承与派生一、继承原理这里举一个继承的例子,定义两个类Point类,代表一个点;Rectangle类,代表一个矩形。
这里Point类(x,y)代表一个点的坐标,把它作为父类;Rectangle类,把它作为Point类的子类。
为啥这样考虑呢?因为一个点的位置决定了以后,就可以以这个点作为矩形的左上角坐标,然后再加上矩形的宽度,高度两个分量值,就可以直接构成一个矩形了。
我们可以看到,左边是Point类包含的所有属性和方法;右边则是Rectangle类包含的所有属性和方法,它的一部分属性和方法是从父类继承下来的。
任何一个矩形对象,都必须需要知道左上角的坐标位置(x,y)和其宽度w,高度h才能知道这是一个怎样的矩形。
因此每当我们用语句创建一个矩形对象的时候,需要调用initRectangle函数做矩形的初始化工作,要为这个函数传入四个参数:所传入的参数需要赋给对象的x,y,w,h分量。
由于在Rectangle类中只定义了宽度w,高度h两个属性,因此x,y的初始化工作它并不能直接完成,此时,就需要调用父类(Point类)里面的initPoint(x,y)函数来完成x,y分量的初始化,等父类的初始化工作完成后,然后再回到子类(Rectangle类)中完成w,h分量的初始化。
总结:Point类是父类,派生出Rectangle子类。
父类中定义的属性x,y被子类继承,子类中则增加了新的属性w,h。
二、派生类的构造函数和析构函数上述程序不是太好,如果引入构造函数和析构函数的概念,把上述的init函数改成构造函数,则代码会更好一些:经过上述定义后,每当创建Rectangle对象时,系统就会分配一块内存给这个对象:总共需要4个int空间,这四个数据成员都需要正确的赋予数值,才能定义一个有意义的矩形。
其中w,h两个属性是Rectangle对象可以直接访问的,而x,y两个属性继承自Point,而且是private,因此在Rectangle对象中不能直接访问这两个属性,只能通过间接调用getX(),getY()函数获取 x,y属性的值。
继承与派生实验报告

继承与派生实验报告继承与派生实验报告引言:继承与派生是面向对象编程中的重要概念,通过继承,一个类可以派生出子类,从而实现代码的复用和扩展。
本文将通过实验来探讨继承与派生的概念、原理和应用。
实验目的:1. 理解继承与派生的概念和原理;2. 掌握如何在编程语言中实现继承和派生;3. 熟悉继承与派生的应用场景。
实验步骤:1. 创建父类:首先,我们创建一个名为"Animal"的父类,该类具有属性和方法,例如"age"和"eat()"。
2. 创建子类:接下来,我们创建一个名为"Cat"的子类,该类继承自"Animal"类。
在子类中,我们可以重写父类的方法或添加新的方法。
3. 实例化对象:通过实例化父类和子类的对象,我们可以调用它们的方法和访问它们的属性。
4. 测试继承与派生:我们可以通过调用父类和子类的方法,观察它们的行为是否符合预期。
实验结果:在创建父类"Animal"时,我们定义了一个"age"属性和一个"eat()"方法。
在创建子类"Cat"时,我们继承了父类的属性和方法,并添加了一个新的"meow()"方法。
在实例化父类对象时,我们可以通过调用"eat()"方法来模拟动物进食的行为。
而在实例化子类对象时,我们既可以调用从父类继承而来的"eat()"方法,也可以调用子类特有的"meow()"方法来模拟猫咪的叫声。
通过实验,我们发现继承与派生的优势在于代码的复用和扩展。
我们只需在父类中定义一次通用的属性和方法,然后让不同的子类继承父类,即可实现代码的复用。
同时,子类还可以通过重写父类的方法或添加新的方法,实现代码的扩展和个性化。
讨论与应用:继承与派生不仅仅局限于上述的父类和子类关系,它还可以在多层次的继承结构中发挥作用。
实验指导书06 类的继承与派生

C++ 面向对象程序设计 实验指导书
实验 06 类的继承与派生
1.1 时间安排 4 学时
本实验安排 4 个实验课时。
1.2 实验目的和要求
1、 从深层次上理解继承与派生的关系 2、 掌握不同继承方式下,从派生类/对象内部和外部对基类成员的访问控制权限。 3、 掌握单继承和多继承的使用方法,尤其是派生类构造函数的声明方式。 4、 掌握继承与派生下构造函数与析构函数的调用顺序。 5、 理解“类型兼容”原则 6、学习利用虚基类解决二义性问题。
C++ 面向对象程序设计 实验指导书 Supervisor * Sptr=new Supervisor("Tanya",8000.00,5000.00); //动态申请空间 cout<<"Name:"<<e.getName()<<endl; cout <<"Pay:"<<e.pay(60)<<endl; //设每月工作小时 cout <<"Name:"<<m.getName()<<endl; cout <<"Pay:"<<m.pay(40)<<endl; cout <<"Name:"<<Sptr->getName()<<endl; cout <<"Pay:"<<Sptr->pay(40)<<endl; //参数这里不起作用 cout<<"/*********类型兼容规则测试********************/"<<endl; /*三个Display,实质上调用的均是Employee的pay函数, 因此,在显示m、*Sptr的对象内容时,出现了与上面不符的结果。*/ Display(e,60); Display(m,40); Display(Sptr,40); }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验6 继承与派生专业:计算机科学与技术班级:10计本1班学号:姓名:实验地点:B102实验时间:2011/11/23 指导教师:李佐勇一、实验目的1.理解继承与派生、单继承与多继承的概念;2.理解基类与派生类的定义及使用方法,派生类对象的定义与初始化方法;3.理解继承与派生过程中,把派生类作为基类构成类族的概念及虚基类的概念。
二、实验环境一台PC机,Windows XP操作系统,V isual C++ 6.0开发环境。
三、实验内容1、由在校人员类(Person)作为基类派生出学生类(Student):在校人员类有数据成员:编号(ID)、姓名(Name)、性别(Sex)、年龄(Age),要求有如下函数成员:构造函数、获取编号的函数和输出所有成员的函数。
把在校人员类作为基类,通过公有继承,派生出学生类,派生类新增成员数据有数学(Math)、物理(Physical)、英语(English)和C++程序设计(CPP)四门课程以及总成绩(Total);新增成员函数有构造函数和输出所有成员的函数。
main()完成派生类对象的定义和有关成员函数的测试。
2、由学生类、课程类作为基类,共同派生出选课类。
声明一个学生类(Student),有数据成员:学号(No)、姓名(Name)、性别(Sex)、年龄(Age),要求有如下函数成员:构造函数、输出所有成员的函数。
声明一个课程类(Lesson),有数据成员:课程编号(Cno)、课程名称(Cname)、学时数(Chour),要求有如下函数成员:构造函数、输出所有成员的函数。
将学生类和课程类作为基类,通过公有继承,共同派生出选课类(SL),派生类新增数据成员:成绩(Score);新增函数成员:构造函数、输出所有成员的函数。
main()完成派生类对象的定义和有关成员函数的测试。
3、由二维坐标点类Point作为基类派生出圆类Circle;再由圆类Circle作为基类派生出圆柱体类Cylinder。
(提示:点类Point的数据成员为点坐标x、y,函数成员有构造函数和显示点坐标的函数show;Circle类新增数据成员为圆的半径radius,其成员函数show除了显示圆心的坐标外还能显示半径大小;Cylinder类新增数据成员为圆柱体高度height,其成员函数除了显示基类的所有数据成员外,还得显示圆柱体的高度)四、实验记录1、#include <iostream>#include <string>using namespace std;class Person{public:Person(int i,char *n, char s, int a){ID=i;name=n;sex=s;age=a;};int getID(){return ID;}void show(){cout<<"ID: "<<ID<<endl;cout<<"name : "<<name<<endl;cout<<"sex: "<<sex<<endl;cout<<"age: "<<age<<endl;}private:int ID;string name;char sex;int age;};class Student:public Person{public:Student(int i,char *n,char s,int a,float m,float p,float e,float c):Person(i,n,s,a){ math=m;physical=p;english=e;cpp=c;total=math+physical+english+cpp;}void show(){Person::show();cout<<"math: "<<math<<endl;cout<<"physical: "<<physical<<endl;cout<<"english: "<<english<<endl;cout<<"C++: "<<cpp<<endl;cout<<"total: "<<total<<endl;}private:float math,physical,english,cpp,total;};void main(){Person p1(1,"张帅",'M',22);p1.show();cout<<endl;Student s1(9901,"林维",'S',21,65,70,75,88);s1.show();}2、#include <iostream>#include <string>using namespace std;class Student{public:Student(int i,char *n, char s, int a){No=i;Name=n;Sex=s;Age=a;};void show(){cout<<"No: "<<No<<endl;cout<<"Name : "<<Name<<endl;cout<<"Sex: "<<Sex<<endl;cout<<"Age: "<<Age<<endl;}private:int No;string Name;char Sex;int Age;};class Lesson{public:Lesson(int no,char *name,int hour){Cno=no;Cname=name;Chour=hour;}void show(){cout<<"Cno: "<<Cno<<endl;cout<<"Cname: "<<Cname<<endl;cout<<"Chour: "<<Chour<<endl;}private:int Cno; string Cname; int Chour;};class SL:public Student,public Lesson{public:SL(int i,char *n,char s,int a,int no,char *name,int hour, int score):Student(i,n,s,a),Lesson(no,name,hour){ Score=score;}void show(){Student::show();Lesson::show();cout<<"Score: "<<Score<<endl;}private:int Score;};void main(){SL s1(25,"MrLin",'S',25,911,"c++",25,100);s1.show();}3#include <iostream>#include <string>using namespace std;class Point {public:Point(int xx=0, int yy=0){x=xx;y=yy;}int getX() { return x; }int getY() { return y; }void show() {cout<<"("<<x<<","<<y<<")"<<endl;}protected:int x,y;};class Circle:virtual public Point{public:Circle(int xx=0,int yy=0,float r=1):Point(xx,yy){radius=r;}int getR() {return radius;}void show(){cout<<"圆心坐标:";Point::show();cout<<"圆半径:"<<radius<<endl;}protected:float radius;};class cylinder:public Circle{public:cylinder(int xx=0,int yy=0,float r=1,float h=2):Point(xx,yy),Circle(r){height=h;}int getH() {return height;}void show(){Circle::show();cout<<"圆柱体高度:"<<height<<endl;}private:float height;};int main(){Point p1(1,2);p1.show();cout<<endl;Circle c1(2,2,3);c1.show();cout<<endl;cylinder cy1;cy1.show();return 0;}五、思考题在类的继承与派生中,私有继承和保护继承的差别在哪里?答:私有(private):访问权限最低;只能是该类内部函数互相调用,派生类、外部函数都不能访问。
保护(protect):访问权限中间;该类内部函数、派生类都能访问,外部类、外部函数不能访问六、实验小结。