面向对象程序设计实验报告 下载本文

void main() { CDerive d(6,4); d.print(); CBase b(5); b.print(); } ②

#include using namespace std; class CBase { public: void print() { cout<<\ } public: int a; };

class CDerive:public CBase {

public: void print() { CBase::print(); cout<<\ } private: int b; };

void main()

{ CDerive d; d.print(); CBase b; b.print(); }

2. 理解下面的程序并运行,然后回答后面的问题。 #include\class CBase {

public: CBase(int a) :a(a) { cout<<\ } ~CBase() { cout<<\ } void print() { cout<<\ } protected: int a; };

class CDerive:public CBase {

public: CDerive(int a,int b,int c) :CBase(a),b(b),c(c) { cout<<\ } ~CDerive()

{ cout<<\ } void print() { CBase::print(); cout<<\ cout<<\ } private: CBase b; int c; };

void main() { CDerive d(1,2,3); d.print(); }

问题一:以上程序的输出结果是什么,为什么? 答:输出结果是

原因是 基类和派生类中构造函数和析构函数的执行顺序。 问题二:①处语句执行完后,d.b.a的值为多少? 答:值为1。

实验六 派生与继承—多基派生

6.1 实验目的

1. 理解多基派生的定义;

2. 基派生中的构造函数与析构函数的调用顺序; 3. 理解多基派生中虚基类的作用。

6.2实验内容

6.2.1 程序阅读

1. 理解下面的程序并运行,然后回答后面的问题。 class CBase1 {

public: CBase1(int a) :a(a) { cout<<\ } ~CBase1() { cout<<\ } void print() { cout<<\ } protected: int a; };

class CBase2 {

public: