C面向对象程序设计习题 继承与派生.docx

上传人:b****5 文档编号:3572888 上传时间:2022-11-24 格式:DOCX 页数:7 大小:16.41KB
下载 相关 举报
C面向对象程序设计习题 继承与派生.docx_第1页
第1页 / 共7页
C面向对象程序设计习题 继承与派生.docx_第2页
第2页 / 共7页
C面向对象程序设计习题 继承与派生.docx_第3页
第3页 / 共7页
C面向对象程序设计习题 继承与派生.docx_第4页
第4页 / 共7页
C面向对象程序设计习题 继承与派生.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

C面向对象程序设计习题 继承与派生.docx

《C面向对象程序设计习题 继承与派生.docx》由会员分享,可在线阅读,更多相关《C面向对象程序设计习题 继承与派生.docx(7页珍藏版)》请在冰豆网上搜索。

C面向对象程序设计习题 继承与派生.docx

C面向对象程序设计习题继承与派生

继承与派生

练习题

1.什么是继承性?

为什么说它是面向对象程序中的重要机制?

2.C++中继承分为哪两个类?

继承方式又分哪三种?

3.三中继承方式中有哪些特点?

不同基础更方式中派生类的对象对基类成员的访问有何不同?

4.如何定义单继承的派生类?

如何定义多继承的派生类?

5.派生类与基类之间有什么关系?

6.单继承中,派生类的构造函数定义格式如何?

7.多继承中,派生类的构造函数定义格式如何?

8.多继承中,在哪些情况下会出现二义性?

如何消除二义性?

9.为什么要引入虚基类?

带有虚基类的派生类的构造函数有什么特点?

作业题

一、选择填空

1.下列对派生类的描述中,(D)是错的。

A.一个派生类可以作另一个派生类的基类;

B.派生类至少有一个基类;

C.派生类的成员除了它自己的成员外,还包含了它的基类的成员;

D.派生类中继承的基类成员的访问权限到派生类保持不变。

2.派生类的对象对它的基类成员中(A)是可以访问的。

A.公有继承的公有成员;

B.公有继承的私有成员;

C.公有继承的保护成员;

D.私有继承的公有成员。

3.派生类的构造函数的成员初始化列表中,不能包含(D)。

A.基类的构造函数;

B.派生类中对象成员的初始化;

C.基类的对象成员的初始化;

D.派生类中一般数据成员的初始化。

4.关于多继承二义性的描述中,(C)是错的。

A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性;

B.解决二义性的最常用的方法是对成员名的限定义;

C.基类和派生类中同时出现的同名函数,也存在二义性问题;(调用时才会出现二义性)

D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性。

7.设置虚基类的目的是(B)

A.简化程序;

B.消除二义性;

C.提高运行效率;

D.减少目标代码。

8.带有虚基类的多层派生类构造函数的成员初始化列表中虚基类的构造函数将被初始化(D)

A.类下面的派生类个数有关;

B.二次;

C.二次;

D.一次。

二、判断下列描述是否正确,对者划√,错者划×。

1.C++语言中,既允许单继承,又允许多重继承。

T

2.派生类是从基类派生出来,它不能再生成新的派生类。

F

3.派生类的继承方式有两种:

公有继承和私有继承。

F(三种)

4.在公有继承中,基类中的公有成员和私有成员在派生类中都是可访问的。

F

5.在公有继承中,基类中只有公有成员对派生类对象是可访问的。

T

6.在私有继承中,基类中只有公有成员对派生类是可访问的。

F

7.在私有继承中,基类中所有成员对派生类的对象都是不可访问的。

T

8.在保护继承中,对于垂直访问同于公有继承,而对于水平访问同于私有继承。

9.派生类是它的基类的组合。

T

10.构造函数可以被继承,析构函数不能被继承。

F(都不能被继承)

11.多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。

T

12.单继承情况下,派生类中对基类成员的访问也会出现二义性。

F

13.解决多继承情况下出现的二义性的方法之一是使用成员名限定法。

T

三、分析下列程序输出的结果。

1.

#include

classA

{

public:

A(inti,intj){a=i;b=j;}

voidMove(intx,inty){a+=x;b+=y;}

voidShow(){cout<<"("<

private:

inta,b;

};

classB:

privateA

{

public:

B(inti,intj,intk,intl):

A(i,j){x=k;y=l;}

voidShow(){cout<

voidfun(){Move(3,5);}

voidf1(){A:

:

Show();}

private:

intx,y;

};

voidmain()

{

Ae(1,2);

e.Show();

Bd(3,4,5,6);

d.fun();

d.Show();

d.f1();

}

2.

#include

classA

{

public:

A(inti,intj){a=i;b=j;}

voidMove(intx,inty){a+=x;b+=y;}

voidShow(){cout<<"("<

private:

inta,b;

};

classB:

privateA

{

public:

B(inti,intj,intk,intl):

A(i,j),x(k),y(l)

{}

voidShow(){cout<

voidfun(){Move(3,5);}

voidf1(){A:

:

Show();}

private:

intx,y;

};

intmain()

{

Ae(1,2);

e.Show();

Bd(3,4,5,6);

d.fun();

d.A:

:

Show();

d.B:

:

Show();

d.f1();

}

3.

#include

classP

{

public:

P(intp1,intp2){pri1=p1;pri2=p2;}

Intinc1(){return++pri1;}

intinc2(){return++pri2;}

voiddisplay(){cout<<”pri1=”<

private:

intpri1,pri2;

};

classD1:

virtualprivateP

{

public:

D1(intp1,intp2,intp3):

P(p1,p2)

{pri3=p3;}

intinc1(){returnP:

:

inc1();}

intinc3(){return++pri3;}

voiddisplay()

{

P:

:

display();

cout<<”pri3=”<

}

private:

intpri3;

};

classD2:

virtualpublicP

{

public:

D2(intp1,intp2,intp4):

P(p1,p2)

{pri4=p4;}

intinc1()

{

P:

:

inc1();

P:

:

inc2();

returnP:

:

inc1();

}

intinc4(){return++pri4;}

voiddisplay()

{

P:

:

display();

cout<<”pri4=”<

}

private:

intpri4;

};

classD12:

privateD1,publicD2

{

public:

D12(intp11,intp12,intp13,intp21,intp22,intp23,intp)

:

D1(p11,p12,p13,),D2(p21,p22,p23),p(p11,p21)

{

pri2=p;

}

intinc1()

{

D2:

:

inc1();

returnD2:

:

inc1();

}

intinc5(){return++pri12;}

voiddisplay()

{

cout<,”D2:

;display()\n”;

D2:

;display();

cout<

}

private:

intpri12;

};

voidmain()

{

D12d(1,2,3,4,5,6,7);

d.display();

cout<

d.inc1();

d.inc4();

d.inc5();

d,D12:

:

inc1();

d.display();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1