面向对象的C++理论与实践 复习题
面向对象程序设计 C 复习题

一选择题(共 45题)1.对类的构造函数和析构函数描述正确的是()。
A.构造函数可以重载,析构函数不能重载√B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载2.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A)规律性 B.传递性√ C.重复性 D.多样性3.假设OneClass为一个类,则该类的复制初始化构造函数的声明语句为()。
(OneClass p); B. OneClass& (OneClass p );C. OneClass(OneClass & p);√D. OneClass (OneClass * p);4.对于结构中定义的成员,其默认的访问权限为()。
B. protected D. static5.下面对静态数据成员的描述中,不正确的是()。
A.静态数据成员可以在类体内进行初始化√B.静态数据成员不可以在类体内进行初始化C.静态数据成员能受private控制符的作用D.静态数据成员调用前必须初始6. C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。
A.复用B.继承√C.封装D.引用7. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a 的格式为()。
A. x(a)B. x[a]C. x->aD. √9. 对于一个类的构造函数,其函数名与类名( )。
A. 完全相同√B. 基本相同C. 不相同D. 无关系10. 一个类的构造函数通常被定义为该类的( )成员。
A. 公有√B. 保护C. 私有D. 友元11. 一个类的析构函数通常被定义为该类的( )成员。
A. 私有B. 保护C. 公有√D. 友元12. 一个类的静态数据成员所表示属性 ( )。
A. 是类的或对象的属性B. 只是对象的属性C. 只是类的属性√D. 类和友元的属性13.类的析构函数的作用是()。
《面向对象程序设计c》综合复习题集及答案详解

《面向对象程序设计c》综合复习题集及答案详解综合复习题集一、单选题1.C++源程序文件的缺省扩展名为(A)。
A.cppB.e某eC.objD.lik2.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.cppB.e某eC.objD.lik3.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
A.cppB.e某eC.objD.lik4.编写C++程序一般需经过的几个步骤依次是()。
A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接5.以下标识符中不全是保留字的是()。
A.caeforintB.defaultthenwhileC.boolclalongD.gotoreturnchar6.能作为C++程序的基本单位是()。
A.字符B.语句C.函数D.源程序文件7.程序中主函数的名字为()。
A.mainB.MAINC.MainD.任意标识符8.C++程序的基本模块为()。
A.表达式B.标识符C.语句D.函数9.可用作C++语言用户标识符的一组标识符是()。
A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaeD.2aDOizeof10.存储以下数据,占用存储字节最多的是()。
A.0B.‘0’C.“0”D.0.011.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车12.设”inta=12;”,则执行完语句”a+=a某a;”后,a的值是()。
A.12B.144C.156D.28813.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是()。
A.1.0/a某b某cB.1/(a某b 某c)C.1/a/b/(float)cD.1.0/a/b/c14.设”inta=15,b=26;”,则”cout<A.15B.26,15C.15,26D.2615.设某是一个bool型的逻辑量,y的值为10,则表达式某&&y的值为()。
面向对象复习题

第一部分面向对象方法概述一、填空题1.对象的抽象是,类的实例是。
2.动态模型描述了系统的结构。
3.软件系统中存在两种控制流,外部控制流是系统中对象之间外部事件的事件流,有、和三种外部事件控制流。
控制流是一个处理内部的控制,均可结构化。
4.在C++和C中有一个函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。
5.继承性是自动共享父类属性和的机制。
6.对象具有封装性,实现了的组合。
7.在面向对象方法中,信息隐藏通过对象的来实现。
类结构分离了和,从而支持了信息隐藏。
8.抽象是指强调实体的、,忽略一些无关紧要的属性。
类实现了对象的和的抽象,它是对象的共性的抽象。
9.子类只继承的属性和操作,称为单重继承。
10.对象的抽象是,类的具体化就是,也可以说类的实例是。
11.类具有,它是的行动的抽象。
12.对象具有状态,对象用来描述它的状态。
13.概念模型描述了系统的。
功能模型指出,动态模型确定,而对象模型确定。
功能模型由组成。
14.面向对象有三个基本要素,它们是、、。
15.面向对象技术在三个级别上促进了共享,它们是、、。
16.活动是一种有时间间隔的操作,它是依附于。
动作是一种瞬时操作,它是与了解在一起的操作。
17.封装性是指所有软件部件内部都有明确的以及清楚的。
每个软件部件都有友好的,软件部件的与分离。
18.主要的对象类型有、、和。
19.同一个类中的共享是指同一个类中的对象有着相同的和相同的。
20.结构化方法的本质是,其、可修改性和可重用性都比较差。
21.对象还有,用于改变对象的状态。
对象实现了和的结合。
22.面向对象方法认为系统是由应用域的组成。
23.对象具有状态,描述对象的状态用它的。
24.类具有属性,描述类的属性用。
25.一个方法有、和。
26.动态模型描述了系统的。
27.对象模型的主要元素是类,关联和。
28.通过这种机制和构造来实现不同应用中的信息共享。
29.面向对象程序设计语言与其它程序设计语言的主要区别是它具有。
何冰-面向对象程序设计-复习题(带部分复习资料)

、单项选择题1引入内联函数的主要目的是A)缩短程序代码,少占用内存空间B.既可以保证程序的可读性,又能提高程序的运行效率C)提高程序的执行速度D)使程序的结构比较清晰2重载函数是A)以函数参数来区分,而不用函数的返回值来区分不同的函数B.以函数的返回值来区分,而不用函数参数来区分不同的函数C)参数表完全相同而返回值类型不同的两个或多个同名函数D)参数表和返回值类型都必须是不同的两个或多个同名函数3有函数原型void fun2 (int *), 下面选项中,正确的调用是A)double x = 2.17; fun2 (&x); C) int a = 15; fun2 (a*3.14);B) int b = 100; fun2 (& b); D) fun2 (256);4在C++中,要实现动态联编,必须使用()调用虚函数。
A)类名B)派生类指针C)对象名D)基类指针5在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是A)派生类的对象可以直接访问基类中的所有成员B)派生类的对象可以初始化基类的引用C)派生类的对象可以赋给基类的对象D)派生类的对象的地址可以赋给指向基类的指针6设置虚基类的目的是A)消除两义性B)简化程序C)提高运行效率D)减少目标代码7关于构造函数,以下说法错误的是A)构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。
在对象创建时由系统自动调用。
B)基类的构造函数可以被派生类所继承。
C)如果程序中未声明,则系统自动产生出一个缺省形式的构造函数。
D)允许为内联函数、重载函数、带缺省形参值的函数。
8下列关于C++函数的说明中,正确的是A)内联函数就是定义在另一个函数体内部的函数B)函数体的最后一条语句必须是return语句C)标准C++要求在调用一个函数之前,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式9由于常对象不能被更新,因此A) 通过常对象只能调用它的常成员函数B) 通过常对象只能调用静态成员函数C) 常对象的成员都是常成员D) 通过常对象可以调用任何不改变对象值的成员函数10下列关于虚函数的说明中,正确的是A)从虚基类继承的函数都是虚函数B)虚函数不得是静态成员函数C)只能通过指针或引用调用虚函数D)抽象类中的成员函数都是虚函数11运算符重载是对已有的运算符赋予多重含义,因此A) 可以对基本类型(如int类型)的数据,重新定义“ + 运算符的含义B) 可以改变一个已有运算符的优先级和操作数个数C) 只能重载C++中已经有的运算符,不能定义新运算符D) C++中已经有的所有运算符都可以重载12模板对类型的参数化提供了很好的支持,因此A) 类模板的主要作用是生成抽象类B) 类模板实例化时,编译器将根据给出的模板实参生成一个类C) 在类模板中的数据成员都具有同样类型D) 类模板中的成员函数都没有返回值13下列符号中可以用作C++标识符的是A)_radius B)foo~bar C)else D)3room 14下列语句中,错误的是A)c onst int buffer=256; B)c onst int temp;C)const double *po int; D)const double *rt =new double(5.5);15有如下程序:int x=3;do{x -= 2;cout«x;}while(!(--x));执行这个程序的输出结果是A) 1 B) 3 0C) l-2 D)死循环16有如下程序:#in clude <iostream>using n amespace std;int mai n(){int *p;*p = 9;cout<<"The value at p:"«*p; return 0;}编译运行程序将出现的情况是A) 够编译时出现语法错误,不能生成可执行文件B) 运行时一定输出:The value at p: 9C) 运行时一定输出:The value at p: *9D) 运行时有可能出错17有如下程序:#i nclude <iostream>using n amespace std;int mai n(){void fun cti on( double val);double val;function( val);cout«val;return 0;}void fun cti on( double val){val = 3;}编译运行这个程序将出现的情况是A)编译出错,无法运行B)输出:3C)输出:3.0 D)输出一个不确定的数18有如下类定义:class AA{int a;public:int getRef() const{return &a;} // ①int getValue() con st{return a;} // ②void set(i nt n) con st{a=n;} // ③frie nd void show(AA aa) const {cout<<aa; } // ④ }; 其中的四个函数定义中正确的是A)①B)②C)③D)④19有如下程序:#in clude <iostream>using n amespace stdclass Base{public:void fun() {cout<v"Base::fu n"v<e ndl;};class Derived:public Base{public:void fun(){cout<<"Derived::f un"«en dl;}};int mai n(){Derived d;d.fu n();return 0;}已知其执行后的输出结果为:Base::fu nDerived::fu n则程序中下划线处应填入的语句是A) Base.fu n(); B)Base::fu n() C)Base->fu n() D)fu n(); 20下面是重载为非成员函数的运算符函数原型,其中错误的是A) Fracti on operator + (Fracti on, Fract ion);B) Fractio n operator - (Fracti on);C) Fract ion& operator = (Fracti on&, Fract ion);D) Fract ion& operator += (Fract ion&, Fract ion);21有如下类定义:class Foo{public:Foo(int v):value(v){} // ①~Foo(){} // ②private:Foo(){} // ③in t value = 0; 〃④};其中存在语法错误的行是A)①B)②C)③D)④22有如下类定义:class Point{int x_, y_;public:Poi nt():x_(0), y_(0){}Poi nt(i nt x, i nt y = 0):x_(x),y_(y){}};若执行语句Point a(2), b[3], *c[4];则Point类的构造函数被调用的次数是A)2次B)3次C)4次D)5次23有如下程序:#i nclude <iostream>using n amespace std;class A{public:A(){cout«"A";}~A(){cout«"~A";}};class B:public A{A* p;public:B(){cout<<"B"; p = new A();} ~B(){cout<<"~B"; delete p;} };int mai n(){B obj; return 0;}执行这个程序的输出结果是A)BAA~A~B~A B)ABA~B~A~AC)BAA~B~A~A D)ABA~A~B~A24有如下程序:#i nclude <iostream>using n amespace std;class Base{private:void fun 1() con st{cout«"fu nl";}protected:void fun 2() con st{cout<<"fu n2";} public:void fun 3() con st{cout<<"fu n3";}};class Derived:protected Base{public:void fun4() con st{cout<<"fu n4";}};int mai n(){Derived obj;obj.fu nl (); // ①obj.fu n2(); // ②obj.fu n3(); // ③obj.fu n4(); // ④return 0;}其中有语法错误的语句是A)①②③④B)①②③C)②③④D)①④ 25有如下程序:#i nclude <iostream>using n amespace std;class Base{public:void fun l(){cout«"Base "<<e ndl;}virtual void fun 2(){cout<<"Base"<<e ndl; } };class Derived:public Base{public:void fun l(){cout<v"Derived"v<e ndl;}void fun 2(){cout<<"Derived"<<e ndl;}};void f(Base & b){b.fu nl();b.fu n2();}int mai n(){Derived obj;f(obj);return 0;}执行这个程序的输出结果是A)Base B)BaseC)Derived D)DerivedBasQerived Base Derived26有如下类声明:class SAMPLE{int n;public:SAMPLE (int i = 0): n (i){}void setValue(i nt nO);};下列关于setValue成员函数的实现中,正确的是A) SAMPLE::setValue(i nt n 0){n = n0;}B) void SAMPLE::setValue(i nt n 0){n = n0;}C) void setValue(i nt n 0){n = n0;}D) setValue(i nt n 0){n = n0;}27 •下列函数模板的定义中,合法的是( )。
面向对象的C++理论与实践 复习题

复习题一、全面复习课程内容和所有平时布置的作业、课堂讲过的例题二、练习下列题型示例。
要求掌握各种基本概念和基本原理,学会灵活应用。
1、简要回答下列问题(1)什么是面向对象的程序设计?(2)什么是对象?它有哪些特征?什么是类?对象与类的关系是什么?(3)什么是消息?如何区分公有消息与私有消息?消息具有什么性质?(4)什么是多态性?在面向对象系统中多态性表现在哪些方面?(5)什么是继承性?继承的作用是什么?(6)C++是如何实现数据封装和信息隐藏的?若类间具有继承关系,则它们之间具有什么特征?(7)为什么要引入构造函数和析构函数?它们各有什么特性?(8)this指针的主要作用是什么?静态成员有哪些特性?(9)使用内部(内置)函数的优点是什么?(10)假设在程序中已经声明了类point,并建立了其对象p1和p4。
请回答以下几个语句有什么区别?①point p2,p3; ②point p2=p1; ③point p2(p1); ④p4=p1;(11)友元函数有什么作用?(12)用成员函数重载运算符和用友元重载运算符,在定义和使用上有什么不同?(13)什么是重载?函数重载有几种表现形式?(14)为什么要引入引用概念,在程序设计中它经常被用在什么场合?(15)简述引用与指针的异同。
(16)派生有几种方式,每种方式中派生类对基类成员的继承性如何?(17)派生类构造函数和析构函数的构造规则是什么?执行顺序怎样?(18)什么是多继承?多继承时,构造函数和析构函数执行顺序是怎样的?(19)在C++中的何种情况下要引入虚基类?虚基类的构造函数的调用顺序是如何规定的?(20)保护段成员与公有段成员有何差别?在派生类中如何继承?(21)什么是虚函数?函数重载与虚函数有哪些异同?(22)什么是纯虚函数?什么是抽象类?(23)在什么情况下要引入抽象类?抽象类有什么特点?(24)什么是多重继承的名字冲突?怎样解决多重继承的名字冲突?(25)C++中多态性体现在哪几方面?(26)为什么使用模板?函数模板声明的一般形式是什么?(27)函数模板与同名的非模板函数重载时,调用的顺序是怎样的?2、填空(1)面向对象的程序设计具有等特征。
复习题汇总

面向对象程序设计课程复习题一、判断题1. 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。
2. 派生类的成员函数可以直接访问基类的所有成员。
3. 函数的参数和返回值类型可以是简单数据类型,也可以是指针、引用、数组和类。
4. 如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。
5. 函数重载既要求两函数参数对应的类型不同又要求参数个数不同。
6.字符串”hello,world”在内存中存放时,占用11个字节的空间7.当函数的返回值是数组类型的,传递的是数组第一个元素的地址。
8.在内存中,一个字符常量或变量是以ASCII码值存储的,它可直接作为整数值参加运算。
1、√2、X3、X4、√5、X6、X7、√8、√1.在C++中,也可使用struct来声明类,但在该类中不能声明成员函数。
(X )2.在定义二维数组时,语句“int a[][4]={{1,2,3},{4}};”是不正确的。
(X )3.采用inline 定义内联函数时,在对于函数代码少、频繁调用的情况下特别有效。
(V )4.类中的静态成员数据为该类的所有对象所共享,并且,在该类对象被撤销时,静态成员并没有撤销。
(V )5.构造函数和析构函数均不能被说明为虚函数。
(X )6.char *const p 表明p是一个指针,它只能指向一个字符串常量。
(X )7.如果派生类的继承方式是protected的,则在main( )函数中,可以通过派生类对象来访问基类的公有的成员。
(X )8.在C++中,可以通过ofstream类对象来建立一个输出文件流。
(V )9.在C语言中,不使用命名空间,但在C++程序中,一定要使用命名空间。
(X )10.在MFC编程中,通过Invalidate(TRUE)可以发出重绘视图的消息。
(V )1 2 3 4 5 6 7 8 9 10××√√×××√×√1.C++程序总是从第一个定义的函数开始执行。
C复习题

一、填空题(每空2 分,共 20 分)1.数据结构分为逻辑结构与()。
2.在面向对象方法中,对象之间进行通信的构造称为()。
3.衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准,其()是度量一个模块功能强度的一个相对指标。
4.一名学生只能住一间宿舍,一间宿舍可住多名学生,则实体“宿舍”与实体“学生”的联系属于()的联系。
5.数据模型包括数据结构、()和数据条件。
6.若有定义:int a=10,b=8,c=4;然后顺序执行下列语句后,变量a中的值是()。
c=(b-=(a-4));a=(c%2)+(b-1);1.C语言中,用关键字()定义基本整型变量,用关键字(),定义单精度实型变量,用关键字()定义字符型变量。
2.表达式3*20/4%10的计算结果是()。
3.复合语句是将多个语句用()括起来组成一个语句。
4.程序中使用putchar( )函数和getchar( )函数,在程序的开头必()。
5.C语言的预处理语句以()开头。
6.goto语句为(),当程序执行到该语句时,转向指定位置执行。
7.return语句的功能是使程序控制从被调用函数返回到()中。
1.一个算法应具有的特点有:()、()、有零个或多个输入、有一个或多个输出、有效性。
2.在程序执行过程中,其值不发生改变的量称为(),其值可变的量称为()。
3.若有定义:int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是()。
4.在三种正规循环中,当条件表达式的值为()时,就结束循环。
5.C语言中函数的参数分为()和()。
1.程序的三种基本结构为()、()和()。
2.在C语言中,用()表示语句的结束。
3.语句printf("%%d%d",123);将输出:()。
4.逻辑运算的结果值是()或()。
5.数组 int a[3][4];共定义了()个数组元素。
6.在C语言中,正确的标识符是由()组成的,且由()开头的。
面向对象分析与设计复习题(昆明理工大学)

面向对象分析与设计习题一、单项选择题1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是(D)的形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。
A. Simula67语言B. Smalltalk语言C. Java语言D.统模语言(UML)的标准2.面向对象的运动产生了多种面向对象的语言, 其中(C)是一种混合性面向对象语言,既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普与。
A. SmalltalkB. EiffelC.C++D. Java3.下列不属于面向对象技术的基本特征的是(B)。
A. 封装性B.模块性C. 多态性D. 继承性4. 面向对象程序设计将描述事物的数据与(C) 封装在一起,作为一个相互依存、不可分割的整体来处理。
A. 信息B. 数据隐藏C.对数据的操作D. 数据抽象5. 关于面向对象方法的优点,下列不正确的叙述是(C)。
A. 与人类习惯的思维方法比较一致B. 可重用性好C.以数据操作为中心D.可维护性好6. (D)是从用户使用系统的角度描述系统功能的图形表达方法。
A. 类图B. 对象图C. 序列图D.用例图7. (C) 是表达系统类与其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。
A.对象图B.组件图C.类图D.配置图8.(D)描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。
A.对象图 B. 协作图 C. 状态图 D.序列图9.(D)就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。
A.组件图B. 协作图C. 状态图D.配置图10. 使用UML进行关系数据库的(B)时,需要设计出表达持久数据的实体类与其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复习题一、全面复习课程内容和所有平时布置的作业、课堂讲过的例题二、练习下列题型示例。
要求掌握各种基本概念和基本原理,学会灵活应用。
1、简要回答下列问题(1)什么是面向对象的程序设计?(2)什么是对象?它有哪些特征?什么是类?对象与类的关系是什么?(3)什么是消息?如何区分公有消息与私有消息?消息具有什么性质?(4)什么是多态性?在面向对象系统中多态性表现在哪些方面?(5)什么是继承性?继承的作用是什么?(6)C++是如何实现数据封装和信息隐藏的?若类间具有继承关系,则它们之间具有什么特征?(7)为什么要引入构造函数和析构函数?它们各有什么特性?(8)this指针的主要作用是什么?静态成员有哪些特性?(9)使用内部(内置)函数的优点是什么?(10)假设在程序中已经声明了类point,并建立了其对象p1和p4。
请回答以下几个语句有什么区别?①point p2,p3; ②point p2=p1; ③point p2(p1); ④p4=p1;(11)友元函数有什么作用?(12)用成员函数重载运算符和用友元重载运算符,在定义和使用上有什么不同?(13)什么是重载?函数重载有几种表现形式?(14)为什么要引入引用概念,在程序设计中它经常被用在什么场合?(15)简述引用与指针的异同。
(16)派生有几种方式,每种方式中派生类对基类成员的继承性如何?(17)派生类构造函数和析构函数的构造规则是什么?执行顺序怎样?(18)什么是多继承?多继承时,构造函数和析构函数执行顺序是怎样的?(19)在C++中的何种情况下要引入虚基类?虚基类的构造函数的调用顺序是如何规定的?(20)保护段成员与公有段成员有何差别?在派生类中如何继承?(21)什么是虚函数?函数重载与虚函数有哪些异同?(22)什么是纯虚函数?什么是抽象类?(23)在什么情况下要引入抽象类?抽象类有什么特点?(24)什么是多重继承的名字冲突?怎样解决多重继承的名字冲突?(25)C++中多态性体现在哪几方面?(26)为什么使用模板?函数模板声明的一般形式是什么?(27)函数模板与同名的非模板函数重载时,调用的顺序是怎样的?2、填空(1)面向对象的程序设计具有等特征。
(2)构造函数是和同名的函数。
(3)假定用户没有给一个名为AB的类定义析构函数,则系统自动给出的缺省析构函数定义为_______。
(4)类的私有成员只能被它的成员函数和_________访问。
(5)如果类C的一个成员函数访问func( ) 时,无法确定是访问基类A还是基类B,就出现二义性。
使用可以消除二义性。
(6)假定AB为一个类,则语句AB( AB &x );为该类_________构造函数的原型说明。
(7)继承机制的作用是。
(8)在C++程序中,对象之间的相互通讯通过实现。
(9)对于任意一个类,析构函数最多可以有个,而构造函数可以有个。
(10)如果可以用p . a的形式访问派生类对象p的基类成员a,则a是成员。
(11)在C++的类中重载二元运算符时,只能指定____个参数。
(12)在C++中,访问一个对象的成员所用的运算符是_________,访问一个指针所指向的对象的成员所用的运算符是_________。
(13)内部函数是指函数。
(14)C++中,封装是借助于达到的。
(15)类型转换函数参数,返回类型。
(16)用于类中虚基类说明的关键字是。
(17)基类的公有成员在派生类中的访问权限由_________决定。
(18)C++支持的两种多态性分别是_________多态性和_________多态性。
(19)面向对象程序设计的机制提供了重复利用程序资源的一种途径。
(20)允许访问一个类的所有对象私有成员、公有成员和保护成员的函数是该类的和。
(21)重载的运算符仍然保持其原来的优先级、结合性和。
(22)从一个抽象类派生的类必须提供纯虚函数的实现代码,或在该派生类中将它说明为。
(23)含有纯虚函数的类为__________。
(24)在含有对象成员的派生类中,构造函数的调用次序是。
(25)当建立_______,程序自动调用该类的构造函数。
(26)定义重载函数时,应在_______上有所不同。
(27)当一个成员函数被调用时,该成员函数的_______指向调用它的对象。
(28)在C++中函数参数传递方式有_______传递和_______传递。
(29)函数的_______性是通过虚函数来实现的。
(30)在删除一个动态对象时,将自动调用该动态对象所属类的函数。
(31)派生类可以定义其中不具备的数据和操作。
(32)指向基类对象的指针变量也可以指向的对象。
(33)基类的公有成员在私有派生类中是____成员,基类的保护成员在公有派生类中是____ 成员。
3、单项选择题(1)在C++程序中,对象之间的相互通信通过。
A、继承实现B、调用成员函数实现C、封装实现D、函数重载实现(2)友元关系不能。
A、继承B、是类与类的关系C、是一个类的成员函数与另一个类的关系D、提高程序的运行效率(3)下面说法正确的是。
A、内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B、内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C、类的内联函数必须在类体内定义D、类的内联函数必须在类体外通过加关键字inline定义(4)假定一个类的构造函数为A( int aa , int bb ){ a = aa - - ; b = a * bb - - ; },则执行A x(4 , 5 );语句后,x . a和x . b的值分别为.A、4和5B、5和4C、4和20D、20和5(5)对于类定义class A {public: virtual void func1(){ }void func2(){ }};class B : public A {public: void func1(){ cout << " class B func 1 " << end1; }virtual void func2(){ cout << " class B func 2 " << end1; } };下面正确的叙述是。
A、A :: func2( )和B :: func1( )都是虚函数B、A :: func2( )和B :: func1( )都不是虚函数C、B :: func1( )是虚函数,而A :: func2( )不是虚函数D、B :: func1( )不是虚函数,而A :: func2( )是虚函数(6)在公有继承的情况下,基类成员在派生类中的访问权限。
A、受限制B、保持不变C、受保护D、不受保护(7)C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是。
A、增加了一些新的运算符B、允许函数重载,并允许设置缺省参数C、规定函数说明符必须用原型D、引进了类和对象的概念(8)下列不是描述类的成员函数的是。
A、构造函数B、析构函数C、友元函数D、拷贝构造函数(9)下面有关类说法不正确的是。
A、一个类可以有多个构造函数B、一个类只有一个析构函数C、析构函数需要指定参数D、在一个类中可以说明具有类类型的数据成员(10)在类中声明转换函数时不能指定。
A、参数B、访问权限C、操作D、标识符(11)在派生类中重新定义虚函数时必须在方面与基类保持一致。
A、参数类型B、参数名字C、操作内容D、赋值(12)面向对象的程序设计语言必须具备的关键要素是。
A、抽象和封装B、抽象和多态性C、抽象、封装、继承和多态性D、抽象、封装和继承性(13)类的构造函数被自动调用执行的情况是在定义该类的。
A、成员函数时B、数据成员时C、对象时D、友元函数时(14)已知类A是类B的友元,类B是类C的友元,则。
A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员(15)若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的。
A、私有成员B、公有成员C、保护成员D、保护成员或私有成员(16)对基类和派生类的关系描述中,错误的是。
A、派生类是基类的具体化B、基类继承了派生类的属性C、派生类是基类定义的延续D、派生类是基类的特殊化(17)在一个类中可以对一个操作符进行重载。
A、1种B、2种以下C、3种以下D、多种(18)重载赋值操作符时,应声明为函数。
A、友元B、虚C、成员D、多态(19)多态性是指。
A、不同的对象调用不同名称的函数B、不同的对象调用相同名称的函数C、一个对象调用不同名称的函数D、一个对象调用不同名称的对象(20)一个函数功能不太复杂,但要求被频繁调用,则应把它定义为。
A、内联函数B、重载函数C、递归函数D、嵌套函数(21)以下有关继承的叙述正确的是。
A、构造函数和析构函数都能被继承B、派生类是基类的组合C、派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员D、基类的公有成员一定能被派生类的对象访问(22)解决二义性问题的方法有。
A、只能使用作用域操作符B、使用作用域操作符或赋值兼容规则C、使用作用域操作符或虚基类D、使用虚基类或赋值兼容规则(23)以下关于抽象类的描述正确的是。
A、不能说明指向抽象类对象的指针或引用B、可以说明抽象类对象C、抽象类的纯虚函数的实现可以由自身给出,也可以由派生类给出D、抽象类的纯虚函数的实现由派生类给出(24)下面对析构函数的描述不正确的是。
A、析构函数可是内置函数B、析构函数与类名相同C、析构函数不能有参数D、析构函数在对象撤销时自动执行(25)派生类对象可访问基类成员中。
A、公有继承的公有成员B、公有继承的私有成员C、公有继承的保护成员D、私有继承的公有成员(26)在类中声明转换函数时不能指定。
A、参数B、访问权限C、操作D、标识符(27)在派生类中重新定义虚函数时必须在方面与基类保持一致。
A、参数类型B、参数名字C、操作内容D、赋值(28)能用友元函数重载的运算符是。
A、+B、=C、[ ]D、->(29)通过调用虚函数时,采用动态束定。
A、对象指针B、对象名C、成员名限定D、派生类名(30)在类中声明转换函数时不能指定。
A、参数个数B、访问权限C、标识符D、操作(31)类B是类A的公有派生类,类A和类B中都定义了虚函数func( ),p是一个指向类A对象的指针,则p -> A :: func( ) 将。
A、调用类A中的函数func( )B、调用类B中的函数func( )C、根据p所指的对象类型而确定调用类A中或类B中的函数func( )D、既调用类A中函数,也调用类B中的函数(32)凡是能用以派生新类,却不能创建自己的对象的类称为。