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

}

cout<<\不及格人数:\

}

实验五 派生与继承—单基派生

5.1 实验目的

1.理解继承的概念;

2.理解公有派生、私有派生和保护派生;

3.理解单基派生类中构造函数和析构函数的执行顺序。

5.2 实验内容 5.2.1程序阅读

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

#include \

12

class CBase {

public: CBase(int a) :a(a) { } protected: void print() { cout<<\ } private: 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(); }

问题一:以上程序有两个错误,试指出来,并改正之。

答:派生类CDerive中没有定义CDerive(),主函数中没有给d,b对象赋值。 #include \

13

class CBase {

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

class CDerive : public CBase {

public: CDerive(int a,int c) :CBase(a) { b=c; } void print() { CBase::print(); cout<<\ } private: int b; };

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

14

}

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();

15