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