2012面向对象程序设计试题集 联系客服

发布时间 : 星期日 文章2012面向对象程序设计试题集更新完毕开始阅读cb36c5a0f524ccbff1218430

2012 C++面向对象程序设计试题集

一、 填空题(每空2分,共20分)

1. 设a、b、c都是int型变量,则a=(b=4)+(c=2)后,a值为_ _,b值为 。 2. 在派生类的成员中有公有成员、 、 、 四类成员。

3. 类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。 class Sample{

public: Sample(int data=0); Private: int data; };

Sample::Sample(int data){

4. 面向对象程序设计的 机制提供了重复利用程序资源的一种途径。

5. 继承发生在利用现有类派生新类时,其中现有类称为 ,或父类;派生的新类称为 ,或 。

6. 若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为 。 7. 已知数组a 中的元素个数为n,下列语句的作用是将下标为i 的元素移动到下标为i-1 的单元,其中1≤i<n。例如,当n=4,a 中原有数据为1,2,3,4 时,则移动后a 中元素为2,3,4,4。请将语句补充完整: for(int i=0;i

8. 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的 ,共同行为被描述为类中的 。

9. 类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。 class Sample{ public:

Sample(int data=0); Private: int data; };

Sample::Sample(int data){ }

10. 实现运行时多态,要使用 函数。

11. 设A为test类的对象且赋有初值,则语句test B(A); 表示 。

12. 在MyClass 类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补充完整。

MyClass::operator=(const MyClass rhs) {

if(this=&rhs) return *this; value=rhs. value; return *this; }

13. C++语言中的每条基本语句以 ________作为结束符,每条复合语句以________ 作为结束符。

14. 若p指针指向字符串“ABCDEFGHIJKL”,则语句cout<<*(p+5);的输出结果是

________。

15. 当一个函数或一个类希望能够直接访问另一个类中的非公用成员时,应该将该函数声名为另一个类的________或________。

16. 设px是指向一个类动态对象的指针变量,则执行“delete px”语句时,将自动调用该类的_______函数。

17. C++中没有字符串类型,字符串是通过________来表示的,每一个字符串都有一个结尾字符________。

18. 使用const 语句定义一个标识符常量时,则必须对它同时进行________。 19. 类test的析构函数名是 。

20. 建立对象时,为节省内存,系统只给_______分配内存。 21. 类中的数据和成员函数默认访问类型为 。

22. 当建立一个新对象时,程序自动调用_______________。

23. 在C++中,函数的参数有两种传递方式,它们是值传递和________。

24. 若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为 。 25. 循环语句:for(int i=50; i>20; i-=2) cout<

26. 任何类中允许有三种访问权限的数据,这三种访问权限分别是 public 、 、 27. 类是用户定义的类型,具有类类型的变量称为 。当建立一个新对象时,程序自动调用 。

28. 利用成员函数对二元运算符重载,其左操作数为 ,右操作数为 。 29. C++将类继承分为 和 两种。

30. 派生类可以定义其_______________中不具备的数据和操作。 31. 有如下类定义: class Sample{

public: Sample(); ~Sample(); private: static int date;};

将静态数据成员data初始化为0的语句是 。

32. 在保护继承方式下,基类的公有和保护成员成为派生类中的 成员。

33. 若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为 。 34. 类test的析构函数名是 。

35. 在保护继承关系下,基类的公有成员和保护成员将成为派生类中的 成员。 36. 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的 ,共同行为被描述为类中的 。

37. 在派生类的成员中有私有成员 、 、 四类成员。

38. 在继承机制下,当对象消亡时,编译系统先执行 的析构函数,然后才执行派生类中子对象类的析构函数,最后执行 的析构函数。

39. 在C语言中,编程的单位是 在C++语言中,编程的单位是 。

40. 若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为 。 41. 面向对象程序设计的 机制提供了重复利用程序资源的一种途径。 42. 非成员函数应声明为类的 才能访问这个类的private成员。 43. 派生新类的过程一般包括 、 、 三个步骤。

44. C++程序的头文件和源程序文件扩展名分别为 和 。 45. 循环语句:for(int i=50; i>20; i-=2) cout<

46. 类中构造函数有 个,析构函数有 个。 47. 有如下类定义:

class Sample{ public: Sample(); ~Sample(); private:

static int date;};

将静态数据成员data初始化为0的语句是 。

48. 假定p所指对象的值为25,p+1所指对象的值为46,则执行“(*p)++;”语句后,p所指对象的值为 。

49. 若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上类名和两个________分隔符。 50. 若需要把一个函数“void F( );”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句: 。

51. 若要把类外定义的成员函数规定为内联函数,则必须把________关键字放到函数原型或函数头的前面。

52. .为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上________关键字。

53. 程序段i=5;j=0;j=++i+j;输出结果为j= 。 54. 类定义中,既包含数据成员,也包含________成员。

55. 假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为 ,其构造函数名是 。

56. 假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为________。

57. 已知数组a 中的元素个数为n,下列语句的作用是将下标为i 的元素移动到下标为i-1 的单元,其中1≤i<n。例如,当n=4,a 中原有数据为1,2,3,4 时,则移动后a中元素为2,3,4,4。请将语句补充完整: for(int i=0;i

58. 是指对已有的运算符赋予多重含义。

59. 带有 的类称为抽象类,抽象类的特征是不能声明一个抽象类的 ,但可以声明一个抽象类的指针或引用。

60. 若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为 。 61. 设A为test类的对象且赋有初值,则语句test B(A); 表示 。

62. 利用“对象名.成员变量”形式访问的对象成员仅限于被声明为 的成员;若要访问其他成员变量,需要通过 函数或 函数。

63. 是指同样的消息被不同类型的对象接收时导致不同的行为。

64. 在继承机制下,当对象消亡时,编译系统先执行 的析构函数,然后才执行派生类中子对象类的析构函数,最后执行 的析构函数。 65. 类中构造函数有 个,析构函数有 个。 66. 循环语句:for(int i=50; i>20; i-=2) cout<

67. 类是用户定义的类型,具有类类型的变量称为 。当建立一个新对象时,程序自动调用 。 68. 有如下类定义: class Sample{

public: Sample(); ~Sample(); private: static int date;};

将静态数据成员data初始化为0的语句是 。

69. 继承发生在利用现有类派生新类时,其中现有类称为 ,或父类;新类称为 ,或子类。

70. 利用“对象名.成员变量”形式访问的对象成员仅限于被声明为 的成员;若要访问其他成员变量,需要通过 函数或 函数。

71. 是指同样的消息被不同类型的对象接收时导致不同的行为。

二、 单项选择题(每小题2分,共20分)

类中定义的成员默认为( )访问属性。

A.public B. private C. protected D. friend 如果一个函数无返回值,定义时它的函数类型应是()。 A.任意 B.int C.void D.无 下面的函数声明中,( )是“void BC(int a,int b);”的重载函数。 A.int BC(int x,int y); B.void BC(int a,char b); C.float BC(int a,int b,int c=0); D.int BC(int a,int b=0);

与C语言printf(“Hello word\\n”) ;语句功能相同的C++语句是( )。 A.cout>>”Hello word\\n” B.cin>>” Hello word\\n” C. cout<<” Hello word\\n” D.cin<<” Hello word\\n”

假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为( )。

A. AB operator+(AB & a , AB & b) B. AB operator+(AB & a) C. operator+(AB a) D. AB & operator+( ) 以下不正确的语句是( )。 A.if(x>y);

B.if(x=y)&&(x!=0) x+=y; C.if(x!=y)cin>>x;else cin>>y; D.if(x

{x=x*x;} while(!x);

下列说法正确的是( )。

A.是死循环 B.循环执行两次 C.循环执行一次 D.有语法错误

下面函数( )的表示方法说明它使用对象的引用作为参数。 A. test(pt *p) B.test(pt p) C.test(pt &p) D.test(const P) 下面叙述不正确的是( )。

A. 基类的保护成员在派生类中仍然是保护的 B. 基类的保护成员在公有派生类中仍然是保护的 C. 基类的保护成员在私有派生类中是私有的 D. 对基类成员的访问必须是无两义性 下列运算符中,( )运算符在C++中不能重载。 A. ?: B. + C. - D.〈=

在C++中,打开一个文件就是将这个文件与一个( )建立关联;关闭一个文件就是取