1、面向对象程序设计复习题库判断题1. C+中标识符内的大小写字母是没有区别的。 2. C+是一种以编译方式实现的高级语言。 3. 在私有继承中,基类中所有成员对派生类都是不可见的。 4. 在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。 5. 使用关键字class定义的类中缺省的访问权限是私有(private)的。 6. 引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。 7. 类封装了数据和操作。 8. 析构函数可以有形参。 9. 派生类至少有一个基类。 10. 全局函数和静态成员函数也能声明为虚函数。 11. 在公有和保护继承方式下,派生类的对象可以对基类的
2、保护成员进行访问 12. 友元本身就是类的成员。 13. 一个类只能有一个对象。 14. 构造函数没有函数类型。 15. 构造函数没有函数类型。 16. 只有类的成员函数才能声明为虚函数。 17. 所谓私有成员是指只有类中所提供的成员函数才能直接访问它们,任何类以外的函数对它们的访问都是非法的。 18. For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。 19. 通常的拷贝初始化函数的参数是某个对象的成员名或对象的引用名。 20. 已知:类A中一个成员函数说明如下:void Set(A& a);其中A& a的含意是将a的地址值赋给变量Set。选择题1. 一个最简单的C+程序,
3、可以只有一个(2分) A. 库函数 B. 自定义函数 C. main函数 D. 空函数 2. C+程序中的简单语句必须以( )结束(2分) A. 冒号 B. 分号 C. 空格 D. 花括号 3. 下列选项中,全部都是C+关键字的选项为(2分) A. while IF Static B. break char go C. sizeof case extern D. switch float integer 4. 下列正确的字符常量为(2分) A. a B. name C. a D. 101 5. 下列选项中,( )不能交换变量a和b的值。(2分) A. t=b; b=a; a=t; B. a=a
4、+b; b=a-b; a=ab; C. t=a; a=b; b=t; D. a=b; b=a; 6. 已知 int a10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , *p = a ;则不能表示数组 a 中元素的式子是( )(2分) A. *a B. *p C. a D. ap-a 7. 在下列运算符中,( )优先级最高。(2分) A. = B. *= C. + D. * 8. 对于以下程序段,表达式正确的是class basepublic: int b;class base1:public base;class base2:public base;class deriv
5、ed: public base1,public base2public: int fun();derived d;(2分) A. d.base1:b B. d.base:b C. d.b D. d.base:fun() 9. 派生类的对象与基类的对象的关系是(2分) A. 属于前者则不属于后者B. 属于前者,不一定属于后者C. 不属于前者则一定不属于后者D. 属于前者则一定属于后者 10. 如果没有使用关键字,则所有成员(2分) A. 都是public权限 B. 都是protected权限 C. 都是private权限 D. 权限情况不确定 11. 下列说法中正确的是(2分) A. 运算符ne
6、w用于建立生存期可控的对象B. new建立动态对象的语法完全不同于建立动态变量的情况C. 使用new建立的动态对象不用时必须调用析构函数删除D. new和构造函数不能同时使用 12. 一个类最多可有几个虚析构函数(2分) A. 不定 B. 4 C. 3 D. 1 13. 关于下面程序段,说法正确的是class A private: int n;public: A(A&); ;A:A(A&a)n=a.n;(2分) A. A obj2(obj1);用对象obj1初始化具有相同类类型的对象obj2B. A obj2(obj1);用对象obj2初始化具有相同类类型的对象obj1C. A(A&a)也可以
7、不使用引用参数而仍然是复制初始化构造函数D. A(A&a)不能访问对象的私有成员14. 析构函数不用于(2分) A. 在对象创建时执行一些清理任务B. 在对象消失时执行一些清理任务C. 释放由构造函数分配的内存D. 在对象的生存期结束时被自动调用 15. 形如X:X(X&)的构造函数称为(2分) A. 拷贝函数 B. 复制函数 C. 初始化构造函数 D. 拷贝初始化构造函数 16. 有关类作用域,下列说法中不正确的是(2分) A. 说明类时使用的一对花括号形成所谓的类作用域B. 类作用域不包含类中成员函数的作用域C. 类作用域中说明的标识符只在类中可见D. 在可能出现两义性的情况下,必须使用作
8、用域限定符“:”17. 缺省的析构函数的函数体是(2分) A. 不存在的 B. 随机产生的 C. 空的 D. 无法确定的 18. 以下说法中正确的是(2分) A. 一个类只能定义一个构造函数,但可以定义多个析构函数B. 一个类只能定义一个析构函数,但可以定义多个构造函数C. 构造函数与析构函数同名,只是名字前加了一个波浪号()D. 构造函数可以指定返回类型;而析构函数不能指定任何返回类型,即使是void类型也不可以19. getline函数的功能是从输入流中读取( )(2分) A. 一个字符 B. 当前字符 C. 一行字符 D. 指定若干个字节 20. 要求打开文件 D:file.dat,并能
9、够读写数据,正确的语句是( )(2分) A. ifstream infile( “D:file.dat”, ios:in ) ;B. ifstream infile( “D:file.dat”, ios:out ) ;C. ofstream outfile( “D:file.dat”, ios:in ) ;D. fstream infile( “D:file.dat”, ios:in|ios:out ) ; 21. 关于C+语言,下列说法不正确的是(2分) A. A C+具有简洁、高效和接近汇编语言的特点B. B C+本身几乎没有支持代码重用的语言结构C. C C+语言不是一种纯面向对象的语言
10、D. D C+支持面向对象的程序设计,这是它对C的重要改进 22. 下列流类中可以用于处理文件的是( )。(2分) A. ios B. iostream C. strstream D. fstream 23. 若一个类中含有纯虚函数,则该类称为( )。(2分) A. 基类 B. 纯基类 C. 抽象类 D. 派生类 24. 下面函数原型中,( )声明了fun为纯虚函数。(2分) A. void fun()=0; B. virtual void fun()=0; C. virtual void fun(); D. virtual void fun() ; 25. 下列函数中,不能说明为虚函数的是(
11、 )(2分) A. 私有成员函数 B. 公有成员函数 C. 构造函数 D. 析构函数 26. 在创建派生类对象时,构造函数的执行顺序是( )。(2分) A. 对象成员构造函数基类构造函数派生类本身的构造函数B. 派生类本身的构造函数基类构造函数对象成员构造函数C. 基类构造函数派生类本身的构造函数对象成员构造函数D. 基类构造函数对象成员构造函数派生类本身的构造函数27. 在c+中,可以被派生类继承的函数是( )。(2分) A. 成员函数 B. 构造函数 C. 析构函数 D. 友员函数 28. 下面描述中,错误的是( )。(2分) A. 在基类定义的public成员在公有继承的派生类中可见,也
12、能在类外被访问。B. 在基类定义的protected成员在私有继承的派生类中可见。C. 在基类定义的公有静态成员在私有继承的派生类中可见。D. 访问声明可以在公有继承派生类中把基类的public成员声明为private成员。 29. 若class B中定义了一个class A的类成员A a,关于类成员的正确叙述是( )(2分) A. 在类B的成员函数中可以访问A类的私有数据成员B. 在类B的成员函数中可以访问A类的保护数据成员C. 类B的构造函数可以调用类A的构造函数做数据成员初始化D. 类A的构造函数可以调用类B的构造函数做数据成员初始化30. 在c+中,类之间的继承关系具有( )。(2分)
13、 A. 自反性 B. 对称性 C. 传递性 D. 反对称性 31. 下列关于类的继承描述中,( )是正确的。(2分) A. 派生类公有继承基类时,可以访问基类的所有数据成员,调用所有成员函数。B. 派生类也是基类,所以它们是等价的。C. 派生类对象不会建立基类的私有数据成员,所以不能访问基类的私有数据成员。D. 一个基类可以有多个派生类,一个派生类可以有多个基类。 32. 下面对构造函数的不正确描述是( )。(2分) A. 系统提供默认的构造函数B. 构造函数可以有参数,所以也可以有返回值C. 构造函数可以重载D. 构造函数可以设置默认参数33. 下面对析构函数的正确描述是( )。(2分) A
14、. 系统不提供默认的析构函数B. 析构函数必须由用户定义C. 析构函数没有参数,也没有返回值D. 析构函数可以设置默认参数34. 说明一个类的对象时,系统自动调用构造函数;撤消对象时,系统自动调用( )。(2分) A. 成员函数 B. 构造函数 C. 析构函数 D. 友员函数 35. 说明一个类的对象时,系统自动调用( );(2分) A. 成员函数 B. 构造函数 C. 析构函数 D. 友元函数 36. 以下不能对二维数组a进行正确初始化的语句是( )。(2分) A. int a23 = 0 ;B. int a3 = 0,1 , 0 ;C. int a23 = 0, 1 , 2, 3 , 4,
15、 5 ;D. int a3 = 0, 1, 2, 3, 4, 5 ; 37. 已知int a3 = 0, 1 , 2, 3, 4 , 5, 6 , 7 ; 则 a21的值是( )。(2分) A. 0 B. 2 C. 6 D. 7 38. 已知char *a= fortran, basic, pascal, java, c+ ; 则 couta3;的显示结果是( )。(2分) A. t B. 一个地址值 C. java D. javac+ 39. 有函数原型 void fun4( int & ); 下面选项中,正确的调用是( )。(2分) A. int a = 2.17; fun4( &a );B. int
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1