收藏 分销(赏)

实验十一继承与派生1.doc

上传人:xrp****65 文档编号:7439041 上传时间:2025-01-04 格式:DOC 页数:5 大小:40.50KB
下载 相关 举报
实验十一继承与派生1.doc_第1页
第1页 / 共5页
实验十一继承与派生1.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述
实验十一 继承与派生(一) 1、 实验目的 掌握利用单继承和多重继承的方式定义派生类的方法;深刻理解在各种继承方式下构造函数和析构函数的执行顺序;理解和掌握公有继承、私有继承和保护继承对基类成员的访问机制;理解虚基类的概念以及引入虚基类的目的和作用。 2、 实验内容 (1) 将书上例5.1的程序片段补充和改写成一个完整、正确的程序,用公用继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上5个数据的值。 #include "stdafx.h" #include <iostream> #include <string> using namespace std; class Student {public: void get_value() {cin>>num>>name>>sex;} void display( ) {cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl;} private : int num; string name; char sex; }; class Student1: public Student {public: void get_value_1() {cin>>age>>addr;} void display_1() { cout<<"age: "<<age<<endl; cout<<"address: "<<addr<<endl;} private: int age; string addr; }; int main() {Student1 stud1; stud1.get_value(); stud1.get_value_1(); stud1.display(); stud1.display_1(); return 0; } (2) 将书上例5.2的程序片段补充和改写成一个完整、正确的程序,用私有继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上5个数据的值。 #include <iostream> #include <string> using namespace std; class Student {public: void display( ) {cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl;} private : int num; string name; char sex; }; class Student1: private Student {public: void display_1() {display(); cout<<"age: "<<age<<endl; //引用派生类的私有成员,正确 cout<<"address: "<<addr<<endl;} //引用派生类的私有成员,正确 private: int age; string addr; }; int main() {Student1 stud1; stud1.display_1(); return 0; } (3) 将书上例5.3的程序修改、补充,写成一个完整、正确的程序,用保护继承方式。在程序中应包括输入数据的函数。 #include <iostream> #include <string> using namespace std; class Student //声明基类 {public: //基类公用成员 void display( ); protected : //基类保护成员 int num; string name; char sex; }; void Student::display( ) {cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl; } class Student1: protected Student //用protected继承方式声明一个派生类 {public: void display1( ); private: int age; string addr; }; void Student1::display1( ) {cout<<"num: "<<num<<endl; //引用基类的保护成员,合法 cout<<"name: "<<name<<endl; //引用基类的保护成员,合法 cout<<"sex: "<<sex<<endl; //引用基类的保护成员,合法 cout<<"age: "<<age<<endl; //引用派生类的私有成员,合法 cout<<"address: "<<addr<<endl; //引用派生类的私有成员,合法 } int main( ) {Student1 stud1; //stud1是派生类student2的对象 stud1.display1( ); //display是派生类中的公用成员函数 return 0; } (4) 有以下程序结构,请分析访问属性。 class A//A为基类 {public: void f1( ); int i; protected: void f2( ); int j; private: int k; }; class B: public A //B为A的公用派生类 {public: void f3( ); protected: int m; private: int n; }; class C: public B //C为B的公用派生类 {public: void f4( ); private: int p; }; int main( ) {A a1; //a1是基类A的对象 B b1; //b1是派生类B的对象 C c1; //c1是派生类C的对象 return 0; }问: (1) 在main函数中能否用b1.i,b1.j和b1.k引用派生类B对象b1中基类A的成员?I,j,f2可以,k不可以 (2) 派生类B中的成员函数能否调用基类A中的成员函数f1和f2?T (3) 派生类B中的成员函数能否引用基类A中的数据成员i,j,k? i,j可以,k不可以 (4) 能否在main函数中用c1.i,c1.j,c1.k,c1.m,c1.n,c1.p引用基类A的成员i,j,k,派生类B的成员m,n,以及派生类C的成员p? (5) 能否在main函数中用c1.f1(),c1.f2(),c1.f3()和c1.f4()调用f1,f2,f3,f4成员函数?T (6) 派生类C的成员函数f4能否调用基类A中的成员函数f1,f2和派生类中的成员函数f3?T 3、 实验小结
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服