第8章例题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第8章继承性和派生类

例题程序

例8.1分析下列程序,回答提出的问题。

程序内容如下:

#include

class A

{

public:

void f1();

protected:

int j1;

private:

int i1;

};

class B:public A

{

public:

void f2();

protected:

int j2;

private:

int i2;

};

class C:public B

{

public:

void f3();

};

回答下述问题:

①派生类B中成员函数f2()能否访问基类A中的成员f1(),i1,j1?

②派生类B中对象b能否访问基类A中的成员f1(),i1和j1?

③派生类C中成员函数f3()能否访问基类B中的成员f2()和j2?能否访问基类A中

的成员f1(),j1和i1?

④派生类C的对象c能否访问基类B中的成员f2(),j2和i2?能否访问基类A中

的成员f2(),j1和i1?

#include

class A

{

public:

void f1()

{

}

protected:

int j1;

private:

int i1;

};

class B:public A

{

public:

void f2()

{f1();

j1=1;

}

void Print()

{cout<

protected:

int j2;

private:

int i2;

};

class C:public B

{

public:

void f3()

{f2();

j2=1;

f1();

j1=1;

}

void Print()

{cout<

};

void main()

{

B b;

b.f1();

C c;

c.f2();

c.f1();

b.Print();

c.Print();

}

例8.2分析下列程序,并回答所提出的问题。

程序内容如下:

#include

class A

{

public:

void f(int i)

{ cout<

void g()

{ cout<<"A\n"; }

};

class B:A

{

public:

void h()

{ cout<<"B\n"; }

A::f;

};

void main()

{

B b;

b.f(10);

b.g();

b.h();

}

回答下列问题:

①执行该程序时,哪些语句会出现编译错?为什么?

②去掉出错语句后,运行该程序后输出结果如何?

③程序中派生类B是以继承方式继承了基类A?

④派生类B中,下列语句含义是什么?

A::f;

⑤将派生类B的继承方式改为公有继承后,恢复原来删去的语句,输出结果如何?

例8.3分析下列程序的输出结果,并回答所提出的问题。

程序内容如下:

#include

#include

class A

{

public:

A(const char *str)

{ strcpy(name,str); }

protected:

char name[80];

};

class B:protected A

{

public:

B(const char *str):A(str)

{}

void Print()

{ cout<

};

void main()

{

B b("Zhang");

b.Print();

}

回答下列问题:

①执行该程序后,输出结果如何?

②将该程序中“class B: protected A”改为“class B: private B”后,输出结果如何?

③将类A中数据成员char name[80]的访问权限改为private后,输出结果如何?

例8.4分析下列程序,并填写不同成员在不同类的访问权限。

程序内容如下:

#include

class A

{

public:

void f1();

protected:

int a1;

private:

int a2;

};

class B:public A

{

public:

void f2();

protected:

void f3();

private:

int b;

};

class C:protected B

{

public:

void f4();

protected:

int c1;

private:

int c2;

};

相关文档
最新文档