实验十一 继承与派生1.doc_第1页
实验十一 继承与派生1.doc_第2页
实验十一 继承与派生1.doc_第3页
实验十一 继承与派生1.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验十一 继承与派生(一)1、 实验目的掌握利用单继承和多重继承的方式定义派生类的方法;深刻理解在各种继承方式下构造函数和析构函数的执行顺序;理解和掌握公有继承、私有继承和保护继承对基类成员的访问机制;理解虚基类的概念以及引入虚基类的目的和作用。2、 实验内容(1) 将书上例5.1的程序片段补充和改写成一个完整、正确的程序,用公用继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上5个数据的值。#include stdafx.h#include #include using namespace std;class Studentpublic: void get_value() cinnumnamesex; void display( ) coutnum: numendl; coutname: nameendl; coutsex: sexageaddr; void display_1() coutage: ageendl; coutaddress: addrendl; 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 #include using namespace std;class Studentpublic: void display( ) coutnum: numendl; coutname: nameendl; coutsex: sexendl; private : int num; string name; char sex; class Student1: private Student public: void display_1() display(); coutage: ageendl; /引用派生类的私有成员,正确 coutaddress: addrendl; /引用派生类的私有成员,正确 private: int age; string addr; ; int main() Student1 stud1; stud1.display_1(); return 0; (3) 将书上例5.3的程序修改、补充,写成一个完整、正确的程序,用保护继承方式。在程序中应包括输入数据的函数。#include #include using namespace std;class Student /声明基类public: /基类公用成员 void display( ); protected : /基类保护成员 int num; string name; char sex;void Student:display( ) coutnum: numendl; coutname: nameendl; coutsex: sexendl; class Student1: protected Student /用protected继承方式声明一个派生类public: void display1( ); private: int age; string addr;void Student1:display1( ) coutnum: numendl; /引用基类的保护成员,合法 coutname: nameendl; /引用基类的保护成员,合法 coutsex: sexendl; /引用基类的保护成员,合法 coutage: ageendl; /引用派生类的私有成员,合法 coutaddress: addrendl; /引用派生类的私有成员,合法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的成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论