《VC++程序设计基础》123.docx

上传人:b****5 文档编号:15167745 上传时间:2023-07-02 格式:DOCX 页数:42 大小:28.03KB
下载 相关 举报
《VC++程序设计基础》123.docx_第1页
第1页 / 共42页
《VC++程序设计基础》123.docx_第2页
第2页 / 共42页
《VC++程序设计基础》123.docx_第3页
第3页 / 共42页
《VC++程序设计基础》123.docx_第4页
第4页 / 共42页
《VC++程序设计基础》123.docx_第5页
第5页 / 共42页
《VC++程序设计基础》123.docx_第6页
第6页 / 共42页
《VC++程序设计基础》123.docx_第7页
第7页 / 共42页
《VC++程序设计基础》123.docx_第8页
第8页 / 共42页
《VC++程序设计基础》123.docx_第9页
第9页 / 共42页
《VC++程序设计基础》123.docx_第10页
第10页 / 共42页
《VC++程序设计基础》123.docx_第11页
第11页 / 共42页
《VC++程序设计基础》123.docx_第12页
第12页 / 共42页
《VC++程序设计基础》123.docx_第13页
第13页 / 共42页
《VC++程序设计基础》123.docx_第14页
第14页 / 共42页
《VC++程序设计基础》123.docx_第15页
第15页 / 共42页
《VC++程序设计基础》123.docx_第16页
第16页 / 共42页
《VC++程序设计基础》123.docx_第17页
第17页 / 共42页
《VC++程序设计基础》123.docx_第18页
第18页 / 共42页
《VC++程序设计基础》123.docx_第19页
第19页 / 共42页
《VC++程序设计基础》123.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《VC++程序设计基础》123.docx

《《VC++程序设计基础》123.docx》由会员分享,可在线阅读,更多相关《《VC++程序设计基础》123.docx(42页珍藏版)》请在冰点文库上搜索。

《VC++程序设计基础》123.docx

《VC++程序设计基础》123

《VisualC++程序设计基础》练习题

第二部分面向对象的程序设计

一、复习并回答下列问题:

1.什么是类,类的定义格式如何?

类中成员的访问权限有哪些?

2.类中的数据成员和成员函数有何区别?

对成员函数的定义有何规定?

3.什么是对象?

对象的定义格式如何?

对象成员如何表示?

指向对象指针的成员如何表示?

4.构造函数的功能和特点有哪些?

析构函数的功能和特点又有哪些?

默认构造函数和默认析构函数有何特点?

5.拷贝构造函数的功能和特点是什么?

默认拷贝构造函数有何用处?

6.成员函数具有哪些特征?

7.静态数据成员如何定义?

如何引用?

它有何特点?

静态成员函数有何特点?

8.友元函数如何定义?

它有什么特点?

友元类如何定义?

它又有何特点?

9.类的作用域是什么?

按生存期如何划分对象?

10.什么局部类?

11.什么是指向对象的指针?

什么是对象的引用?

它们如何被定义?

它们的主要功能是什么?

12.什么是对象数组?

什么是对象数组指针?

它们是如何定义的?

13.this指针的含义是什么?

为什么在程序中很少见到?

14.指向一维对象数组的指针是如何定义的?

它的功能是什么?

15.什么是对象指针数组?

它是如何被定义的?

16.如何使用const来说明指针常量?

使用const说明常量时应注意些什么?

17.如何说明const成员函数?

const成员函数有何特点?

18.const数据成员如何初始化?

19.什么是对象成员?

如何对对象成员进行初始化?

20.使用new运算符创建对象时和创建对象数组时有何不同?

21.什么是转换函数?

如何定义一个转换函数?

转换函数有何功能?

22.什么是继承性?

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

23.C++语言中继承分为哪两类?

继承方式又分为哪三种?

三种不同继承方式有何特点?

24.不同继承方式中,说明下列各种情况对于基类成员访问有何不同?

A)派生类

B)派生类的对象

C)派生类的派生类

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

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

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

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

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

29.什么是子类型?

它有何作用?

30.多继承中那些情况下会出现二义性?

如何消除?

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

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

32.什么是多态性?

为什么说"多态性是继承性的补充"?

33.什么是函数重载?

定义重载函数时应注意哪些问题?

34.什么是运算符重载?

是否所有的运算符都能重载?

35.运算符重载的定义格式如何?

运算符重载有几种形式?

36.运算符被重载后与原运算符有何关系?

37.什么是编译时多态性和运行时多态性?

38.什么是虚函数?

如何说明虚函数?

是否所有的成员函数都可以说明为虚函数?

39.什么是纯虚函数?

什么是抽象类?

40.虚析构函数有何功能?

41.总结c++语言的多态性包含哪些内容?

42.在C++的输入输出操作中,如何理解"流"的概念?

从流的角度说明什么是提取操作?

什么是插入操作?

43.系统预定的流类对象中,cin和cout的功能是什么?

44.从键盘上输入一个字符有哪些方法?

输入一个字符串有哪些方法?

45.向屏幕上输出一个字符有哪些方法?

输出一个字符串有哪些方法?

46.如何将一个int型的数按不同进制形式输出?

47.如何输出一个指定精度的浮点数?

48.如何确定输出数据项的宽度?

49.打开和关闭一个磁盘文件有哪些方法?

50.读写磁盘文件中信息有哪些方法?

51.如何对文件进行随机存取操作?

二、填空

1.关于类定义格式的描述中,〖D〗是错的。

A)一般类的定义格式分为说明部分和实现部分

B)一般类中包含有数据成员和函数成员

C)类中成员可设置以下访问方式之一:

public,private,protected

D)函数成员都应是公有的、数据成员都应是私有的

2.下列关键字中,〖C〗不是类定义中使用的关键字。

A)classB)publicC)switchD)private

3.下列叙述中,不正确的是〖B〗。

A)类的构造函数可以重载B)类的析构函数可以重载

C)一个类可以不定义构造函数D)一个类可以不定义析构函数

4.关于类中成员函数的描述中,〖B〗是错的。

A)类中可以说明一个或多个成员函数

B)类中的成员函数只能定义在类体外

C)定义在类体外的成员函数前加inline可以成为内联函数

D)在类体外定义成员函数时,在函数名前除了加类型说明符外,还需用作用域运算符限定该成员函数所属的类

5.关于对象的描述中,〖A〗是错的。

A)同一个类创建的若干个对象的数据结构和其内容都是不相同的

B)对象的成员表示与C语言中结构变量的成员表示相同

C)一个类可以定义多个对象、指向对象的指针和对象数组

D)一个对象在定义时就被初始化

6.下列是构造函数的特点,〖C〗是错的。

A)构造函数是一种成员函数,它具有一般成员函数的特点

B)构造函数的名称与其类名相同

C)构造函数必须指明其类型

D)一个类中可定义1个或多个构造函数

7.下列是析构函数的特点,〖A〗是错的。

A)析构函数的名字不能与类名相同,否则将与构造函数无法区别

B)析构函数中不可以有参数

C)析构函数定义时不必指出类型

D)析构函数也是一种成员函数

8.拷贝构造函数具有的下列特点中,〖C〗是错的。

A)如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的

B)拷贝构造函数只有一个参数,并且是该类对象的引用

C)拷贝构造函数的名字不能用类名

D)拷贝构造函数是一种成员函数

9.下列关于类成员函数的特性中,〖B〗是错的。

A)除析构函数外,成员函数都可以重载

B)成员函数都是内联的

C)除析构函数外,成员函数都可以设置默认参数

D)成员函数可以是公有的,也可以是私有的

10.关于静态成员的描述中,〖B〗是错的。

A)静态成员可以分为静态数据成员和静态函数成员

B)静态数据成员定义后必须在类体内进行初始化

C)静态数据成员初始化不使用其构造函数

D)静态函数成员中不能直接引用非静态成员

11.关于友元的描述中,〖A〗是错的。

A)友元函数是成员函数,它被说明在类体内

B)友元函数可直接访问类中的私有成员

C)友元函数破坏类的封装性,使用时应少用

D)友元类中的所有成员函数都是友元函数

12.已知:

类A中的一个成员函数说明为voidSet(A&a);其中,A&a的含义是〖B〗。

A)变量A与变量a按位与作为函数Set()的实参

B)类A的对象引用a作为函数Set()的参数

C)指向类A的指针a作函数Set()的参数

D)将类A的对象a的地址值赋给变量Set

13.下列关于对象数组的描述中,〖A〗是错误的。

A)对于对象数组只能赋初值而不能赋值

B)对象数组的下标是从0开始的

C)对象数组的每个元素都是相同类的对象

D)对象数组的数组名是一个常量指针

14.下列关于指向类的一维对象数组的指针p的定义中,〖B〗是正确的。

A)Ap[5]B)A(*p)[5]C)(A*)p[5]D)A*p[]

15.已知:

constchar*ptr;那么ptr应该是〖A〗。

A)指向字符串常量的指针B)指向字符串的常量指针

C)指向字符的常量的指针D)指向字符常量的指针

16.已知:

Print()函数是一个类的const成员函数,它无返回值,也无参数。

下列关于Print()函数的各种说明中,〖A〗是正确的。

A)voidPrint()const;B)voidconstPrint();

C)constvoidPrint();D)voidPrint(const);

17.下列关于对象成员的描述中,〖D〗是错误的。

A)对象成员是类的一种数据成员,它是另一个类的对象

B)对象成员不可以是自身类的对象

C)对对象成员的初始化要包含在该类的构造函数中

D)一个类中只能含有一个对象成员作其成员

18.对new运算符的下列描述中,〖B〗是错误的。

A)它可以动态创建对象和对象数组

B)用它创建对象数组时必须指定初始值

C)用它创建对象时要调用构造函数

D)用它创建的对象可以使用运算符delete来释放

19.对delete运算符的下列描述中,〖D〗是错误的。

A)用它可以释放用new运算符创建的对象和对象数组

B)用它释放一个对象时,它作用于一个new所返回的指针

C)用它释放一个对象数组时,它作用的指针名前须加下标运算符([])

D)它不适用于空指针

20.下列对类型转换函数的描述中,〖D〗是错误的。

A)类型转换函数是一种非静态的成员函数

B)类型转换函数是无参数的

C)类型转换函数不能被定义为友元函数

D)类型转换函数必须在定义时指出返回值类型

21.下列对派生类的描述中,〖C〗是错误的。

A)一个派生类可以作为另一个派生类的基类

B)派生类至少应有一个基类

C)基类中成员访问权限继承到派生类中都保持不变

D)派生类的成员除了自己定义的成员外,还包含了它的基类成员

22.派生类的对象对它的哪一类基类成员是可以访问的?

〖A〗

A)公有继承的基类的公有成员B)公有继承的基类的保护成员

C)公有继承的基类的私有成员D)保护继承的基类的公有成员

23.关于多继承二义性的描述,〖D〗是错误的。

A)派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性

B)一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性

C)解决二义性最常用的方法是使作用域运算符对成员进行限定

D)派生类和它的基类中出现同名函数时,将可能出现二义性

24.多继承派生类构造函数构造对象时,〖B〗被最先调用。

A)派生类自己的构造函数B)虚基类的构造函数

C)非虚基类的构造函数D)派生类中子对象类的构造函数

25.定义重载函数的下列条件中,〖C〗是错误的。

A)要求参数个数不同B)要求参数类型不同

C)要求函数返回值类型不同D)要求在参数个数相同时,参数类型不同

26.下列函数中,〖D〗不能重载。

A)成员函数B)非成员函数C)构造函数D)析构函数

27.下列运算符中,〖A〗不能重载。

A):

:

B)[]C)&&D)new

28.下列有关运算符重载的描述中,〖B〗是正确的。

A)运算符的重载可改变其优先级B)运算符的重载不可改变其语法结构

C)运算符的重载可改变其结合性D)运算符的重载可改变其操作数的个数

29.下列关于动态联编的描述中,〖A〗是错误的。

A)运行时多态性是在编译时确定操作函数的

B)运行时多态性是以虚函数为基础的

C)运行时多态性是在继承的前提下的一种多态性

D)运行时多态性要求类的继承是公有的

30.下列关于虚函数的描述中,〖C〗是正确的。

A)虚函数是static存储类的成员函数

B)虚函数是一个非成员函数

C)基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数

D)派生类的虚函数与基类的虚函数应具有不同的类型和个数

31.关于纯虚函数和抽象类的描述中,〖B,C〗是错误的。

A)纯虚函数是一种特殊的虚函数,它没有具体体现

B)抽象类中一定具有一个或多个纯虚函数

C)抽象类的派生类中一定不会再有纯虚函数

D)抽象类一般作为基类使用,其纯虚函数的实现由其派生类给出

32.下列叙述中,不正确的是〖C〗。

A)含纯虚函数的类称为抽象类B)不能直接由抽象类建立对象

C)抽象类不能作为派生类和基类D)纯虚函数不能定义其实现部分

33.下列各种类中,〖A〗不能说明对象。

A)抽象类B)派生类C)嵌套类D)局部类

34.进行文件操作时应包含〖B〗文件。

A)math.hB)fstream.hC)string.hD)ctype.h

35.使用控制符进行格式输出时,应包括〖C〗文件。

A)stream.hB)math.hC)iomanip.hD)strstrea.h

36.已知:

inta,*p=&a;输出指针p所存放的十进制地址的方法是〖D〗。

A)cout<

37.下列输出字符'A'的方法中,〖B〗是错的。

A)cout<<'A';B)cout<

C)cout.put('A');D)chara='A';cout<

38.关于对getline()函数的下列描述中,〖A〗是错误的。

A)该函数所使用的终止符只能是换行符。

B)该函数是从键盘上读取字符串的。

C)该函数所读取的字符串的长度是受限制的。

D)该函数读取字符串时遇到终止符便停止。

39.关于read()函数的下述描述中,〖C〗是对的。

A)该函数只能从键盘输入中获取字符串。

B)该函数只能用于文本文件的操作。

C)该函数只能按规定读取指定数目的字符。

D)该函数读取的字符串只能直接显示在屏幕上。

40.在ios类中提供的控制格式标志位中,〖A〗是转换为十六进制形式的标志位。

A)hexB)octC)decD)right

41.输出格式的控制符中,〖D〗是设置输出宽度的。

A)wsB)endsC)setfill()D)setw()

42.在打开磁盘文件的访问方式常量中,〖C〗是以追加方式打开文件的。

A)inB)outC)appD)ate

43.下列函数中,〖D〗是对文件进行写操作的。

A)get()B)read()C)getline()D)put()

44.下列叙述中,不正确的是〖C〗。

A)this指针是指向当前调用成员函数的对象的指针

B)this指针能用于数据成员和函数成员中

C)this指针破坏了类的封装性

D)this指针的类型与所指对象的类型相同

45.以下说法不正确的是〖C〗。

A)运算符重载本质上就是函数重载

B)函数重载是多态性的体现

C)运算符重载只能通过类成员函数实现

D)重载后的运算符,其用法与该运算符的原始定义完全一样

46.若有以下程序说明和语句:

voidfn(ints){…}

voidfn(int&t){…}

voidmain()

{inta=5;

fn

(2);//L1

fn(a);//L2

}

则下述说法正确的是〖C〗。

A)编译器编译L1行语句时,无法确定调用哪一个重载函数

B)重载函数fn的定义非法

C)编译器编译L2行语句时,无法确定调用哪一个重载函数

D)以上说法都不正确

47.若有以下说明和语句:

#include

classQ{

intx,y;

public:

Q(inta=0,intb=0){x=a;y=b;}

Q(){}

};

voidmain()

{Qq0;//L0

Qq1

(1);//L1

Qq2(1,2);//L2

}

则以下说法正确的是〖A〗。

A)编译器编译L0行语句时,无法确定调用哪一个构造函数

B)编译器编译L1行语句时,无法确定调用哪一个构造函数

C)编译器编译L2行语句时,无法确定调用哪一个构造函数

D)以上程序正确

48.若有以下说明和语句:

#include

classQ{

intx,y;

public:

Q(inta=0,intb=0){x=a;y=b;}

};

voidmain()

{Qq0;//L0

Qq1(q0);//L1

Qq2=q0;//L2

}

则以下说法正确的是〖D〗。

A)编译器编译L0行语句时,无法确定调用哪一个构造函数

B)编译器编译L1行语句时,无法确定调用哪一个构造函数

C)编译器编译L2行语句时,无法确定调用哪一个构造函数

D)以上程序正确

49.若有以下说明和语句:

#include

classQ{

intx,y;

public:

Q(inta=0,intb=0){x=a;y=b;}

};

voidmain()

{Qq();//L

}

则以下说法正确的是〖B〗。

A)L行说明了一个对象qB)L行说明了一个函数原型

C)L行说明了一个对象数组D)以上说法都不正确

50.以下程序输出的两个字母分别为〖c〗和〖d〗。

#include

classX{

public:

virtualvoidf(){cout<<'a'<<'b'<

};

classY:

publicX{

public:

voidf(){cout<<'c'<<'d'<

};

voidmain(){Yy;X*xp=&y;xp->f();}

51.以下程序的输出结果分别是〖20〗和〖30〗。

#include

classBase{

protected:

intx;

public:

Base(inta){x=a;}

};

classA:

publicBase{

public:

A(inta):

Base(a){}

intGetX(){returnx;}

};

classB:

publicBase{

public:

B(inta):

Base(a){}

intGetX(){returnx;}

};

classC:

publicB,publicA{

public:

C(inta):

A(a+10),B(a+20){}

};

voidmain()

{Cc(10);

cout<

:

GetX()<

cout<

:

GetX()<

}

52.以下程序的运行结果为〖50,0〗

〖退出主函数!

〖调用析构函数!

〗。

#include

classQ{

intx,y;

public:

Q(inta=0,intb=0){x=a;y=b;}

voidP(){cout<

~Q()

{cout<<"调用析构函数!

\n";}

};

voidmain()

{Qq(50);

q.P();

cout<<"退出主函数!

\n";

}

53.以下程序的运行结果为〖B〗

#include

classA{

intx;

public:

A(inta)

{x=a;cout<<"callA(int)\n";}

A(){cout<<"callA()\n";}

};

classB:

publicA{

inty;

public:

B(inta,intb)

{y=a;cout<<"callB(int,int)\n";}

};

voidmain(){Bb1(2,3);}

A)callA(int)B)callA()C)callB(int,int)D)callA(int)

callB(int,int)callB(int,int)

54.以下程序的运行结果为〖B〗

#include

classA{

intx;

public:

A(inta=0){x=a;cout<

};

classB{

inty;

public:

B(inta=0){y=a;cout<

};

classC:

publicA,publicB{

intz;

public:

C(inta=0,intb=0):

B(a+20),A(a)

{z=b;cout<

};

voidmain(){Cc(100,200);}

A)120,100,200B)100,120,200C)200,100,120D)200,120,100

55.以下程序的运行结果为〖B〗

#include

classA{

intx;

public:

A(inta=0){x=a;cout<

};

classB{

inty;

public:

B(inta=0){y=a;cout<

};

classC:

publicB,virtualpublicA{

intz;

public:

C(inta=0,intb=0):

B(a+20),A(a)

{z=b;cout<

};

voidmain()

{Cc(100,200);}

A)120,100,200B)100,120,200C)200,100,120D)200,120,100

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

×

(1)一个类中可以只有公有成员,也可以只有私有成员,也可以公有、私有成员都有。

×

(2)用class定义的类中,默认的访问权限是公有的。

√(3)指向对象的指针的成员表示与对象的成员表示所使用的运算符不同。

×(4)构造函数是用来初始化所定义的对象,如果一个类中没有定义任何构造函数,则该类的对象便无法初始化。

√(5)定义一个对象时系统只存储其数据成员,而不存储对象的成员函数,成员函数是同类对象所共享的。

×(6)析构函数是一个函数体为空的成员函数。

×(7)构造函数和析构函数都可以重载,因为它们都是成员函数。

√(8)如果一个成员函数只存取一个类的静态数据成员,可将该成员函数说明静态成员函数。

×(9)在类的构造函数中可对其静态数据成员进行初始化。

√(10)友元类中的所有成员函数可以对该类中的私有成员进行存取操作。

√(11)指向对象的指针和对象都可以作为函数参数,但是使用前者比使用后者好些。

×(12)对象引用作函数参数不如使用对象指针方便。

√(13)对象数组的元素必须是同一个类的对象。

√(14)一维对象指针数组的每一个元素应该是某个类的对象的地址。

√(15)运算符new可以创建变量或对象,也可以创建数组。

√(16)const类型说明符可以用来说明各种不同类型的常量,也可以说明const成员函数。

×(17

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2