《面向对象程序设计复习试题.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计复习试题.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象程序设计复习试题 语法扩充 选择题 在C+中用( D )能够实现将参数值带回。 a)数组 b)指针 c)引用 d)上述ABC都可 考虑函数原型void test(int a,int b=7,char *ch=*),下面的函数调用中,属于不合法调用的是:( C ) A)test(5) B)test(5,8) C)test(6,#) D)test(0,0,*); 已知: int m=10;下列表示引用的方法中,正确的是:( C ) A)int &Z; B)int &t=10; C)int &X=m; D)float &f=&m; 下列不是函数重载所要求的条件是:( D ) A)函数名相同
2、B)参数个数不同 C)参数类型不同 D)函数返回值类型不同 在C+中执行以下4条语句后输出rad值为:( C ) static int hot=200; int &rad=hot; hot=hot+100; coutstr; 当输入 Microsoft Visual Studio ! 所得结果是str=(B)。 A、 Microsoft Visual Studio ! B、 Microsoft C、 Microsoft Visual D、 Microsoft Visual Studio .函数模板(C)。 A、代表某一具体函数 B、与模板函数是同一个函数 C、与某一个具体的数据类型连用 D、是
3、模板函数实例化的结果 在C+中,关于下列设置参数默认值的描述中,正确的是(C) A、不允许设置参数的默认值 B、设置参数默认值只能在定义函数时设置 C、设置参数默认值时,应该是先设置右边的再设置左边的 D、设置参数默认值时,应该全部参数都设置 下列表示引用的方法中,(A)是正确的。 已知: k=1000; A、int &x=k; B、char &y; C、int &z=1000; D、float &t=&k; 有如下模板定义: template T fun(T x,T y)return x*x+y*y; 在下列对fun的调用中,错误的是:( C ) A)fun(2,8) B)fun, C)fu
4、n,8) D)fun (2,8) 通常情况下,函数模板中的类型参数个数不能是( A ) A)0个 B)1个 C)2个 D)3个 填空题 1、假定有如下定义:int x;,若要将整型变量y定义为变量x的引用,则应使用的定义语句是_int &y=x;_。 具有相同函数名但具有不同参数表的函数称为重载函数。 2、在进行函数调用时,将把参数的值传递给值参数,把参数的_地址_传递给引用参数。 3、执行完下列三条语句后,指针变量c指向_b_。 Int a,b,*c=&a; int *&p=c; p=&b; 4、假设有如下函数定义:void Fun(int x,int y=100);则语旬Fun(5)语句_
5、 Fun(5,100)_等价。 5、在一个C+程序中,每个变量都必须遵循_先定义后使用_的原则。 6、下面是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。 函数TotalSum 计算数组元素之和。请完成下列程序。 #include _int Totalsum(int array,int len)_ ; void main() int a5=2,3,6,8,10; _int Total _; Total =Totalsum(a,5); cout 静态成员函数没有( B )。 A返回值 B. this指针 C. 指针参数 D. 返回类型 在下列关键
6、字中,用于说明类中公有成员的是( A )。 Apublic; Bprivate; Cprotected; Dfriend 不是构造函数的特征( D )。 A构造函数的函数名与类名相同; B. 构造函数可以重载; C. 构造函数可以设置缺省参数; D. 构造函数必须指定类型说明。 是析构函数的特征( A )。 A一个类中只能定义一个析构函数; B. 析构函数名与类名不同; C. 析构函数的定义只能在类体内; D. 析构函数可以有一个或多个参数。 关于成员函数特征的下述描述中,( A )是错误的。 A成员函数一定是内联函数; B. 成员函数可以重载; C. 成员函数可以设置参数的缺省值; D. 成
7、员函数可以是静态的。 下述静态数据成员的特性中,( D )是错误的。 A说明静态数据成员时前边要加修饰符static; B静态数据成员要在类体外进行初始化; C引用静态数据成员时,要在静态数据成员名前加和作用域运算符; D静态数据成员不是所有对象所共用的。 填空题 1、在撤销类的对象时,C+程序将自动调用该对象的_析构_函数。 2、类中的构造函数是一个特殊的成员函数,它由类的对象_自动_调用,它的作用是_为对象分配内存,数据成员初始化_。 3、对类中的成员函数和属性的访问是通过_public_、_protected_和_private_这 3个关键字来控制的。 4、 _delete_运算符删除
8、new运算符所动态分配的内存空间。 5、假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为_MyClass()_。 6、类中构造函数有_一个或多_个,析构函数有_一_个。 7、类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的_数据成员_ ,共同行为被描述为类中的_成员函数_。 8、若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句_friend class FriendClass;_。 9、在结构定义中,数据和成员函数默认权限是_public_。在类定义中,数据和成员函数默认权限是_pr
9、ivate_。 10、在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。 #include class MyClass pub1ic: _ MyClass ( int a ) _x = a; _C+中,类与类之间的继承关系具有( C )A)自反性 B)对称性 C)传递性 D)反对称性 .在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限( B )A)受限制 B)保持不变 C)受保护 D)不受保护 .按解释中的要求在下列程序划线处填入的正确语句是:( C ) #include class Base public: void fun()coutBase:funendl;
10、; class Derived:public Base public: void fun() 保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限( C ) A)受限制 B)保持不变 C)受保护 D)不受保护 .下面描述中,表达错误的是:( B ) A)公有继承时,基类中的public成员在派生类中仍是public的 B)公有继承时,基类中的private成员在派生类中仍是private的 C)公有继承时,基类中的protected成员在派生类中仍是protected的 D)私有继承时,基类中的public成员在派生类中是private的 .下列虚基类的声明中,正确的是:( B )
11、A)class virtual B: public A B)class B: virtual public A C)class B: public A virtual D)virtual class B: public A .C+设置虚基类的目的是( A ) A)消除二义性 B)简化程序 C)提高运行效率 D)减少目标代码 class X int a; public: X(int x=0)a=x; ; class Y:public X int b; public : Y(int x=0,int y=0):X(y) b=x; ; 下列语句组中出现语法错误的是(D) A. X *pa=new Y(
12、1,2); a1=Y(1,3); b1(2,3); X &a3=b1; a4(10);Y b2=a4; class Base public: int i; Base(int t) : i ( t ) ; class Derived: protected Base Base b; int j; public: Derived (int t); ; 在构造函数Derived的下列定义中,正确的是(B ) A. Derived : : Derived (int t) : b(t), j(t) B. Derived : : Derived (int t) : b(t), Base(t), j(t) C
13、. Derived : : Derived (int t) : Base(t), j(t) D. Derived : : Derived (int t) : i(t), b(t), j(t) 在哪种派生方式中,派生类可以访问基类中的protected成员(B ) A)public和private B)public、protected和private C)protected和private D)仅protected 在C+中,类与类之间的继承关系具有(C ) A) 自反性 B) 对称性 C) 传递性 D) 反对称性 下列关于类的继承描述中,(A )是错误的 A) 派生类可以访问基类的所有数据成员
14、,也能调用基类的所有成员函数 B) 派生类也是基类,但基类不一定具有派生类的全部属性和方法 C) 继承描述类的层次关系,派生类可以具有与基类相同的属性和方法 D) 一个基类可以有多个派生类,一个派生类可以有多个基类 .当一个派生类仅有protected继承一个基类时,基类中的所有公有成员成为派生类的(C)A) public成员 B) private成员 C) protected成员 D) 友元 当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( B )A) public成员 B) private成员 C) protected成员 D) 友元 不论派生类以何种方法继承基
15、类,都不能使用基类的(B ) A) public成员 B) private成员 C) protected成员 D) public成员和protected成员 在创建派生类对象时,构造函数的执行顺序是(D) A) 对象成员构造函数、基类构造函数、派生类本身的构造函数 B) 派生类本身的构造函数、基类构造函数、对象成员构造函数 C) 基类构造函数、派生类本身的构造函数、对象成员构造函数 D) 基类构造函数、对象成员构造函数、派生类本身的构造函数 下列虚基类的声明中,正确的是( D )。 A)class virtual B:public A B)virtual class B:public A C)
16、class B:public A virtual D)class B:virtual public A 下面叙述错误的是(A )。 A)基类的protected成员在派生类中仍然是protected的 B)基类的protected成员在public派生类中仍然是protected的 C)基类的protected成员在private派生类中是private的 D)基类的protected成员不能被派生类的对象访问 下列说法中错误的是(A )。 A) 保护继承时基类中的public成员在派生类中仍是public的 B)公有继承时基类中的private成员在派生类中仍是private的 C)私有继承
17、时基类中的public成员在派生类中是private的 D)保护继承时基类中的public成员在派生类中是protected的 关于多继承二义性的描述中,错误的是(B )。 A)一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性 B)解决二义性的最常用的方法是对成员名的限定法 C)基类和派生类中同时出现的同名函数,也存在二义性问题 D)一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性 下面叙述错误的是(C )。 A)派生类可以使用private派生 B)对基类成员的访问必须是无二义性的 C)基类成员的访问能力
18、在派生类中维持不变 D)赋值兼容规则也适用于多继承的组合 派生类的构造函数的成员初始化列表中,不能包含(C )。 A)基类的构造函数 B)派生类中子对象的初始化 C)基类中子对象的初始化 D)派生类中一般数据成员的初始化 下面(B )的叙述不符合赋值兼容规则。 A)派生类的对象可以赋值给基类的对象 B)基类的对象可以赋值给派生类的对象 C)派生类的对象可以初始化基类的引用 D)派生类的对象的地址可以赋值给指向基类的指针 .下列虚基类的声明中,正确的是:( B ) A)class virtual B: public A B)class B: virtual public A C)class B:
19、 public A virtual D)virtual class B: public A .C+设置虚基类的目的是( A ) A)消除二义性 B)简化程序 C)提高运行效率 D)减少目标代码 填空题 1、垂直访问时,保护成员的访问控制权限与_公有_成员相同。 2、利用继承能够实现_代码复用_。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件。 3、派生类对基类的继承有三种方式:_public_、_protected_ 和_private_。 4、多继承情况下,派生类的构造函数的执行顺序取决于_定义_派生类时所指定的各基类的顺序。 5、 C+提供的_多继承_机制允许一个派生类继承多个基类,即使这些基类是相互无关的。 6、派生类可以调用其_定义_中不具备的数据和操作。 7、对基类数据成员的初始化必须在派生类构造函数中的_初始化列表_处执行。 8、如果类Alpha继承了类Beta,则类Alpha称为_派生_类,类Beta称为_基_类。 9、己知下面的程序框架,按注释中的提示补充细节。 #include class planet