欢迎来到天天文库
浏览记录
ID:38703658
大小:41.50 KB
页数:8页
时间:2019-06-17
《实验十六 继承和派生的基本概念》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验十六继承和派生的基本概念一、实验目的继承与派生是面向对象的特性,是面向对象程序设计模拟客观世界的手段之一,本实验的内容包括介绍MFC基础类的派生关系,通过实验要求掌握以下内容。1.掌握类继承与派生关系以及实现方法,理解类的层次结构。2.掌握派生类构造函数初始化基类成员和对象成员的方法。3.掌握赋值兼容原则,掌握派生类的复制构造函数和赋值运算符的定义。二、实验内容1.范例:定义一个继承与派生关系的类体系,在派生类中访问基类成员。先定义一个点类,包含x,y坐标数据成员,显示函数和计算面积的函数成员;以点为基类派生一个圆类,增加表示半径的数据
2、成员,重载显示和计算面积的函数;定义一个线段类,以两个点类对象作数据成员,定义显示、求面积及长度函数,线段类采用聚合方式,因为有两个端点,不能用派生方式。编程测试所定义的类体系。【程序】 #include#includeusingnamespacestd;#definepi3.14159classpoint{friendclassline;protected:doublex,y;public:point(){x=0;y=0;}point(doublexv,doubleyv){x=xv;y=yv;}doubl
3、earea(){return0;}voidshow(){cout<<"x="<4、his->point::operator=(cir);radius=cir.radius;return*this;}doublearea(){returnpi*radius*radius;}voidshow(){cout<<"x="<5、){}doublegetlength(){returnsqrt((start.x-end.x)*(start.x-end.x)+(start.y-end.y)*(start.y-end.y));}doublearea(){return0;}voidshow(){cout<<"startpoint:";start.show();cout<<"end.point:";end.show();}};intmain(){pointpt(0,0);circlecl1(100,100,10),cl2(cl1),cl3;lineln1(0,0,106、0,100);cout<<"点面积:"<7、 【注意】在Point类中,将Line类定义为友元,便于在Line类中访问;Point类的x和y定义为Protected访问权限,便于派生类访问。注意派生类的构造函数中对基类数据成员的初始化方法(即Circle(doublexv,doubleyv,doublevv):Point(xv,yv)),以及构造函数中对对象成员的初始化方法(即Line(doublexv1,doubleyv1,doublexv2,doubleyv2):start(xv1,yv1),end(xv2,yv2){})【要求】(1)建立工程,录入上述程序,改变数据实验之。(28、)修改Point类的数据成员x,y的访问权限为private,再运行,结果如何?(3)如果不将Line类设为Point类的友元,应采取什么措施?为哪个类增加数据或函数成员?2.编
4、his->point::operator=(cir);radius=cir.radius;return*this;}doublearea(){returnpi*radius*radius;}voidshow(){cout<<"x="<5、){}doublegetlength(){returnsqrt((start.x-end.x)*(start.x-end.x)+(start.y-end.y)*(start.y-end.y));}doublearea(){return0;}voidshow(){cout<<"startpoint:";start.show();cout<<"end.point:";end.show();}};intmain(){pointpt(0,0);circlecl1(100,100,10),cl2(cl1),cl3;lineln1(0,0,106、0,100);cout<<"点面积:"<7、 【注意】在Point类中,将Line类定义为友元,便于在Line类中访问;Point类的x和y定义为Protected访问权限,便于派生类访问。注意派生类的构造函数中对基类数据成员的初始化方法(即Circle(doublexv,doubleyv,doublevv):Point(xv,yv)),以及构造函数中对对象成员的初始化方法(即Line(doublexv1,doubleyv1,doublexv2,doubleyv2):start(xv1,yv1),end(xv2,yv2){})【要求】(1)建立工程,录入上述程序,改变数据实验之。(28、)修改Point类的数据成员x,y的访问权限为private,再运行,结果如何?(3)如果不将Line类设为Point类的友元,应采取什么措施?为哪个类增加数据或函数成员?2.编
5、){}doublegetlength(){returnsqrt((start.x-end.x)*(start.x-end.x)+(start.y-end.y)*(start.y-end.y));}doublearea(){return0;}voidshow(){cout<<"startpoint:";start.show();cout<<"end.point:";end.show();}};intmain(){pointpt(0,0);circlecl1(100,100,10),cl2(cl1),cl3;lineln1(0,0,10
6、0,100);cout<<"点面积:"<7、 【注意】在Point类中,将Line类定义为友元,便于在Line类中访问;Point类的x和y定义为Protected访问权限,便于派生类访问。注意派生类的构造函数中对基类数据成员的初始化方法(即Circle(doublexv,doubleyv,doublevv):Point(xv,yv)),以及构造函数中对对象成员的初始化方法(即Line(doublexv1,doubleyv1,doublexv2,doubleyv2):start(xv1,yv1),end(xv2,yv2){})【要求】(1)建立工程,录入上述程序,改变数据实验之。(28、)修改Point类的数据成员x,y的访问权限为private,再运行,结果如何?(3)如果不将Line类设为Point类的友元,应采取什么措施?为哪个类增加数据或函数成员?2.编
7、 【注意】在Point类中,将Line类定义为友元,便于在Line类中访问;Point类的x和y定义为Protected访问权限,便于派生类访问。注意派生类的构造函数中对基类数据成员的初始化方法(即Circle(doublexv,doubleyv,doublevv):Point(xv,yv)),以及构造函数中对对象成员的初始化方法(即Line(doublexv1,doubleyv1,doublexv2,doubleyv2):start(xv1,yv1),end(xv2,yv2){})【要求】(1)建立工程,录入上述程序,改变数据实验之。(2
8、)修改Point类的数据成员x,y的访问权限为private,再运行,结果如何?(3)如果不将Line类设为Point类的友元,应采取什么措施?为哪个类增加数据或函数成员?2.编
此文档下载收益归作者所有