面向对象的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)等。
面向对象C++复习题
一、单选题(每小题2分,共30分)1. C++源程序文件的缺省扩展名为( A )。
A. cppB. exeC. objD. lik2. 设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( )。
A. 12B. 144C. 156D. 2883. 设”int a=15,b=26;”,则”cout<<(a,b);”的输出结果是( )。
A. 15B. 26,15C. 15,26D. 264. 字符串”a+b=12\n”的长度为()。
A. 6B. 7C. 8D. 95. 假定下列x和y均为int型变量,则不正确的赋值为()。
A. x+=y++B. x++=y++C. x=++yD. ++x=++y6. 下列的符号常量定义中,错误的定义是()。
A.const M=10;B.const int M=20;C.const char ch;D.const bool mark=true;7. 下列()的调用方式是引用调用。
A. 形参和实参都是变量B.形参是指针,实参是地址值C. 形参是引用,实参是变量D.形参是变量,实参是地址值8. 采用重载函数的目的是()。
A. 实现共享B. 减少空间C. 提高速度D. 使用方便,提高可读性9. 在一个类的定义中,包含有()成员的定义。
A. 数据B. 函数C. 数据和函数D. 数据或函数10. 在类作用域中能够通过直接使用该类的()成员名进行访问。
A. 私有B. 公用C. 保护D. 任何11. 在关键字public后面定义的成员为类的()成员。
A. 私有B. 公用C. 保护D. 任何12. 在关键字private后面定义的成员为类的()成员。
A. 私有B. 公用C. 保护D. 任何13. 类的构造函数是在定义该类的一个( )时被自动调用执行的。
A. 成员函数B. 数据成员C. 对象D. 友元函数14. 类的析构函数是一个对象被( )时自动调用的。
A. 建立B. 撤消C. 赋值D. 引用15. 对类对象成员的初始化是通过构造函数中给出的( )实现的。
面向对象程序设计复习总结题(含部分答案)
《面向对象程序设计》复习要点及复习题(一)复习要点1.标识符、基本数据类型(字节数)、构造数据类型、运算符的种类、运算符的优先级和结合性、控制台输入和输出2.三种基本控制结构、if…else语句、switch语句、for语句、while语句、do…while语句、跳转语句;函数参数传递、函数重载、内联函数;标识符的作用域和生存期。
3.类的定义和使用、this指针、构造函数和析构函数、组合技术、静态成员、友元、运算符重载4.指针与数组、二级指针、动态内存的分配与释放、深复制与浅复制、递归。
5.派生类的构造与析构、派生类与基类的赋值兼容、多重继承与虚基类。
6.虚函数与动态绑定、纯虚函数与抽象类(二) 复习题一、单项选择题。
1.在switch语句中,为了结束分支,一般应在每个分支的结尾处加上语句(C)。
A. continueB. gotoC. breakD. default2.说明友元函数的关键字是(D)。
A. inlineB. virtualC. staticD. friend3.下面对指向常量的指针描述正确的是(C)。
A. 只能指向常量B. 指向的数据可以被修改C. 可以指向普通变量D. 必须进行初始化4.友元函数没有(A)。
A. this指针B. 返回类型C. 函数名D. 参数5.关于重载,(A)不正确。
A. 类名可以重载B. 函数名可以重载C. 运算符可以重载D. 缺省参数是重载的一种方式6.用new分配n维数组空间,首地址赋予指针p,则p应为指向(C)维数组的指针。
A. 0B. 1C. n-1D. n7.为类X重载前缀自增运算,则函数返回类型应为(C)。
A. XB. X*C. X&D. int8.以下(A)未调用构造函数(X为类名)。
A. X*p;B. X obj;C. X obj(1);D. X obj=2;9.若在类外有函数调用X::func();则函数func是类X的(C)函数。
总《面向对象程序设计c++》综合复习题集及答案详解
}
A. 求字符串的长度 B.将字符串x连接到字符串p后面
C. 将字符串x复制到字符串p中 D.将字符串x反向存放
47. 函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为( )个。
30. switch语句能够改写为( )语句。
A. for B. if C. do D. while
31. do语句能够改写为( )语句。
A. 复合 B. if C. switch D. while
32. 在下面的一维数组定义中,哪一个有语法错误。( )
A. int a[]={1,2,3}; B. int a[10]={0};
38. 以下说法中正确的是( )。
A. C++程序总是从第一个定义的函数开始执行
B. C++程序总是从main函数开始执行
C. C++函数必须有返回值,否则不能使用函数
D. C++程序中有调用关系的所有函数必须放在同一个程序文件中
39. 以下叙述中不正确的是( )。
A. 在一个函数中,可以有多条return语句
9. 可用作C++语言用户标识符的一组标识符是( )。
A. void define +WORD
B. a3_b3 _123 YN
C. for -abc Case
D.2aDO sizeof
10. 存储以下数据,占用存储字节最多的是( )。
A. 0 B.‘0’C.“0”D. 0.0
11. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( )符号作为分隔符。
面向对象程序设计C++复习题
面向对象程序设计C++复习题一、单选题1.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是(D )A. 公有类型B. 私有类型C. 保护类型D. 友元类型2.下列关于多态性的描述,错误的是( C )A. C++语言的多态性分为编译时的多态性和运行时的多态性B. 编译时的多态性可通过函数重载实现C. 运行时的多态性可通过模板和虚函数实现D. 实现运行时多态性的机制称为动态绑定3.在C++语言中,数据封装要解决的问题是( D )A. 数据的规范化B. 便于数据转换C. 避免数据丢失D. 防止不同模块之间数据的非法访问4.使用private修饰的成员变量,以下说法正确的是(A )A. 只能由本类中的函数使用,不能被外面的程序所访问。
B.可以由本类中的函数使用,也可以被外面的程序所访问。
C. 只能由本类和派生类中的函数使用。
D. 可以在主函数中使用。
5.对类的构造函数和析构函数描述正确的是(A )A.构造函数可以重载,析构函数不能重载B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载6.下面对静态数据成员的描述中,正确的是(A )A. 静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用7.在VC++语言类体系中,不能被派生类继承的有(B )A. 转换函数B.构造函数C.虚函数D.静态成员函数8.下面关于句柄正确的说法是(A )A. 句柄是一个标识Windows资源和设备等对象的变量。
B. 句柄是用户程序自定义的数据类型。
C. 用户程序使用句柄时不需要定义。
D. 句柄仅仅是一个抽象的概念,程序中不能使用句柄。
9.下面关于动态链接库正确的说法是(B )A. 动态链接库提供的函数,在编译阶段能够连接到应用程序中。
面向对象程序设计复习题库
判断题1. C++中标识符内的大小写字母是没有区别的。
2. C++是一种以编译方式实现的高级语言。
3. 在私有继承中,基类中所有成员对派生类都是不可见的。
4. 在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
5. 使用关键字class定义的类中缺省的访问权限是私有(private)的。
6. 引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。
7. 类封装了数据和操作。
8. 析构函数可以有形参。
9. 派生类至少有一个基类。
10. 全局函数和静态成员函数也能声明为虚函数。
11. 在公有和保护继承方式下,派生类的对象可以对基类的保护成员进行访问12. 友元本身就是类的成员。
13. 一个类只能有一个对象。
14. 构造函数没有函数类型。
15. 构造函数没有函数类型。
16. 只有类的成员函数才能声明为虚函数。
17. 所谓私有成员是指只有类中所提供的成员函数才能直接访问它们,任何类以外的函数对它们的访问都是非法的。
18. For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。
19. 通常的拷贝初始化函数的参数是某个对象的成员名或对象的引用名。
20. 已知:类A中一个成员函数说明如下:void Set(A& a);其中A& a的含意是将a的地址值赋给变量Set。
选择题1. 一个最简单的C++程序,可以只有一个(2分)A. 库函数B. 自定义函数C. main函数D. 空函数2. C++程序中的简单语句必须以( )结束(2分)A. 冒号B. 分号C. 空格D. 花括号3. 下列选项中,全部都是C++关键字的选项为(2分)A. while IF StaticB. break char goC. sizeof case externD. switch float integer4. 下列正确的字符常量为(2分)A. "a"B. 'name'C. aD. '\101'5. 下列选项中,( )不能交换变量a和b的值。
(最新整理)c++面向对象复习题答案版
(完整)c++面向对象复习题答案版编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)c++面向对象复习题答案版)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)c++面向对象复习题答案版的全部内容。
一、填空题1。
C++中有两种数据类型:( char )和( int long )可以使用signed修饰符。
在C++中,用数组、指针、和(引用)作为函数参数,能够将参数值带回。
2。
为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为(内联函数),方法是在函数类型前加上(inline)关键字。
3。
面向对象的程序设计有四大特征,它们是抽象、封装、(继承 )、(多态 )。
4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是( 把对象的每个数据成员的值都复制到新建立的对象中)。
5。
用new申请某一个类的动态对象数组时,在该类中必须能够匹配到(该类的)构造函数,否则应用程序会产生一个编译错误。
6。
静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象( 共享)。
7.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型( 不同).8。
在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的( 封装 )特性。
9.预编译指令由三种,它们是:文件包含、(宏定义 )和(条件编译)。
10。
静态的成员函数没有隐含的(this),所以,它们只能直接访问类的静态的数据成员。
11.在C++中,函数的参数有两种传递方式,它们是值传递和(地址).12。
当非静态成员函数被调用时,该成员函数的(this)指向调用它的对象。
面向对象程序设计复习题
一、选择题(每题1分,共30分)1. 下列关于C++语言的描述,哪个是错误的?()。
A. C++语言支持结构化程序设计方法B. C++语言是解释执行的C. C++语言是编译执行的D. C++语言支持面向对象程序设计方法2. 下列哪种数据类型的存储位数最多?()。
A. charB. intC. floatD. double3.下列哪个名字可以作为变量名?()。
A. No.1B. 123ABCC. longD. Long4. 下列定义变量语句中,错误的是()。
A. int x, y;B. int x = 5, y;C. int x = y = 5;D. int x = 5, y = 5;5. 计算圆形周长的公式是:周长=2πr,其中r为半径。
编写计算圆形周长的程序时需要将什么数据定义成变量?()。
A. πB. 半径C. 周长D. 半径和周长6. C++语言表达式:5 / 2,该表达式结果的数据类型和值分别是()。
A. short,2B. int,2C. float,2.5D. double,2.57. 执行C++语句:int x = 5, y = 6, z; z = x++ / --y; 执行后变量x、y和z的值分别为()。
A. 5, 5, 1B. 6, 5, 1C. 6, 5, 1.2D. 5, 6, 08. 执行下列语句:int x = 5, &y = x; y = x + 10; 执行后变量x的值为()。
A. 5B. 10C. 15D. 209. 下列定义并使用指针变量px的语句中,正确的是()。
A. int x, *px; px = 10;B. int x, *px = &x; px = 10;C. int x, *px; *px = 10;D. int x, *px = &x; *px = 10;10. 执行下列C++语句:int x = 15;if (x%2 == 0) cout << x / 2;else cout << x / 2 + 1;显示器上将显示()。
面向对象程序设计复习题答案
面向对象程序设计复习选择题1. 一个设计得好的面向对象系统具有(B)特征。
A 低内聚、低耦合B 高内聚、低耦合C 高内聚、高耦合D 低内聚、高耦合2. 面向对象程序设计的特点主要概括为(C)。
A 可分解性、可组合性、可分类性B 继承性、封装性、多态性C 抽象封装性、继承性、多态性D 封装性、易维护性、可扩展性、可重用性3. 关于C#程序的书写,下列不正确的说法是( D )。
A. 区分大小写B. 一行可以写多条语句C. 一条语句可写成多行D. 一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法4. 关于C#语言的基本语法,下列哪些说法正确的是(C)A. C#语言使用using 来引用需要用到的命名空间;B. 用C#编写的程序中,Main 函数是唯一允许的全局函数;C. C#语言中使用的名称严格区分大小写;D. C#中一条语句必须写在一行内;5 以下标识符中,正确的是(A)。
A._nNameB. typeofC. 6bD. x5#6.字符串连接运算符包括&和(A)。
A. +B. -C. *D. /7.拆箱是关于:(B)A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换8.装箱是关于:(A)A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换9.下列引用类型和值类型描述正确的是(A)。
A. 引用类型变量保存内存地址,值类型直接保存变量值B. 引用类型在变量中直接保存变量值,值类型保存内存地址C. 引用类型和值类型保存数据的方式相同D. .NET Framework不支持值类型,因为所有的类型都是引用类型了10.一个类中的静态方法的调用可以:(A)A、通过类名调用B、通过实例化的对象调用C、在主方法中直接调用D、在同一个类中的某一方法中直接调用11.以下数据类型中,属于引用类型的是:(A)A、string类型B、double类型C、int类型D、 char类型12.下列类型中为值类型的是(C)A. 字符串类型B. 树组类型C. 枚举类型D. 接口类型13.decimal类型和浮点类型都可以表示小数,正确说法:(C)A. 两者没有任何区别B. 小数类型比浮点类型取值范围大C.小数类型比浮点类型精度高D. 小数类型比浮点类型精度低14. 有定义语句:int [,]a=new int[5,6]; 则下列正确的数组元素的引用是(C)。
《面向对象程序设计c++》期末复习题
A. 使用#define可以为常量定义一个名字,该名字在程序中可 以再赋另外的值 B. 使用const定义的常量名有类型之分,其值在程序运行时是 不可改变的 C. 在程序中使用内联函数使程序的可读性变差 D. 在定义函数时可以在形参表的任何位置给出缺省形参值 11. 70. 用new运算符创建一个含10个元素的一维整型数组的 正确语句是( )。 A. int *p=new a[10]; B. int *p=new float[10]; C. int *p=new int[10]; D. int *p=new int[10]= {1,2,3,4,5} 12. 71. 下列给字符数组赋初值时,正确的是( )。 A. char s1[]=”abcdef”; B. char s2[4]=”abcd”; C. char s3[2][3]={“abc”,”xyz”}; D. char s4[4][]= {‘a’,’x’,’s’,’t’}; 13. 73. 假定变量m定义为“int m=7;”,则定义变量p的 正确语句为( )。 A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m; 14. 74. 假定k是一个double类型的变量,则关于变量p的正 确定义语句为( )。 A. double p=&k; B. int *p=&k; C. double &p=*k; D. char *p=”Thank you!”; 15. 82. 定义p并使p指向动态空间中的包含30个整数的数组 所使用的定义语句为( )。 A. int *p=new int[30]; B. int *p=new int(30); C. int *p=new [30]; D. *p=new int[30]; 16. 88. 下列对引用的陈述中不正确的是( )。 A. 每一个引用都是其所引用对象的别名,因此必须初始化 B. 形式上针对引用的操作实际上作用于它所引用的对象 C. 一旦定义了引用,一切针对其所引用对象的操作只能通过 该引用间接进行 D. 不需要单独为引用分配存储空间 17. 89. 假定变量a和pa定义为“double a[10], *pa=a;”, 要将12.35赋值给a中的下标为5的元素,不正确的语句是( )。
面向对象程序设计考前复习题及答案
简答题1、传统的结构化程序设计的优点和缺点是什么?优点:(1)这种程序设计方法力求算法描述精确。
(2)对每一子过程模块简单进行程序正确性证明。
缺点:(1)这种程序设计方法本质上是面对“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能干脆反映人类求解问题的思路。
(2)程序代码可重用性差。
程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。
即使重用代码,通常也是通过拷贝或编辑重新生成一份。
(3)维护程序的一样性困难。
该种方法将数据与对数据进行处理的程序代码分别。
2、什么是对象?每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。
对象的属性描述了对象的状态和特征,对象的方法说明白对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。
3、什么是消息?在面对对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。
当一个对象须要另外一个对象供应服务时,它向对方发出一个服务恳求,而收到恳求的对象会响应这个恳求并完成指定的服务。
这种向对象发出的服务恳求就称为消息。
4、什么是多态性?所谓多态性是指当程序中的其他部分发出同样的消息时,根据接收消息对象的不同能够自动执行类中相应的方法。
其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大便利。
5、什么是面对对象的程序设计方法?这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。
在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法确定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。
6、面对对象方法的特点是什么?(1)OOP以“对象”或“数据”为中心。
由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更困难的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的变更对整个系统几乎没有影响。
- 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)凡是能用以派生新类,却不能创建自己的对象的类称为。