1实验八、继承 (2 学时) 1.实习目的及要求: 1)掌握继承的实现方法; 2)继承中常见问题的处理方法; 2.预习: 预习派生类的定义和使用、创建派生类对象时构造函数的调用次序、多重继承中的冲突、及虚基类。 3.实验内容: 3.1 分析下面的程序,指出程序运行的结果: 请各位同学用你的学号命名你的作业文件夹,将各题的答案放入(用 w ord文挡或写字板录入均可,要求为每一题建立一个文档),并发到教师机相应目录下(通常是教师机的最后一个硬盘)的作业文件夹中。具体位置按老师的指示操作。 1) 分析下面的程序,指出程序运行的结果: #include class CBase { public: void fn1(); }; void CBase::fn1() {cout<<"调用基类类的函数 fn1()\n"; } class CDerived:public CBase { public: void fn1(); }; void CDerived::fn1() {cout<<"调用派生类的函数 fn1()\n"; 2} void main() { CDerived d1; CBase *pb=&d1; CBase &pd=d1; d1.fn1(); pb->fn1(); pd.fn1(); 答案: /* 调用派生类的函数fn1() 调用基类类的函数fn1() 调用基类类的函数fn1() Press any key to continue */ 2 ) 分析下面的程序,指出程序运行的结果: #include class CBase1 { int x ; public: CBase1( ) {x=0 ; cout<<"调用构造函数CBase1( )!\n";} CBase1( int a) {x=1;cout<<" 调用构造函数CBase1( int )!\n";} ~CBase1( ){cout<<"调用析构函数~CBase1( )!\n";} }; class CBase2 { int y; public: CBase2( ) {y=0 ;cout<<"调用构造函数CBase2( )!\n";} CBase2(int a) {y=a ;cout<<"调用构造函数CBase2(int )!\n";} ~CBase2(){cout<<" 调用析造函数~CBase2( )!\n";} }; class A 3{ int x; public: A () {x=0 ; cout<<"调用构造函数A( )!\n";} A(int a){x=a;cout<<"调用构造函数A(int )!\n";} ~A(){cout<<" 调用析构函数~A()!\n";} }; class CDerived:public CBase1, virtual public CBase2 { A a; public: CDerived() {cout<<" 调用构造函数CDerived( )!\n";} CDerived(int x,int y ,int z):a(x),CBase1(y),CBase2(z) {cout<<" 调用构造函数CDerived(int,int )!\n";} ~CDerived(){cout<<" 调用析造函数~CDerived( )!\n";} }; void main() { CDerived*x=new CDerived; CDer...