复习题目 面向对象程序设计
面向对象程序设计复习题

一、单项选择题。
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)3room14下列语句中,错误的是A)const int buffer=256。
面向对象程序设计复习试题(答案)

语法扩充1.1选择题在C++中用(D)能够实现将参数值带回。
a)数组b)指针c)引用d)上述ABC都可考虑函数原型voidtest(inta,intb=7,char*ch="*"),下面的函数调用中,属于不合法调用的是:(C)A)test(5)B)test(5,8)C)test(6,"#")D)test(0,0,"*");已知:intm=10;下列表示引用的方法中,正确的是:(C)A)C)在A)对在A)C)A)C)A)intFunc(int,int,int);B)doubleFunc(int,int);C)doubleFunc(double,double);D)doubleFunc(int,double);下面的哪个保留字不能作为函数的返回类型(C)A)voidB)intC)newD)long一个函数功能不太复杂,但要求被频繁调用,选用(A)。
A.内联函数B.重载函数C.递归函数D.嵌套函数已知函数f的原型为:voidf(int&a,char*b);变量s,t的定义是:ints;chart[]="ABCD";把s和t分别作为第一参数和第二参数来调用函数f,正确的调用语句是(C)Af(&s,&t);Bf(&s,t);Cf(s,t);Df(s,&t);若定义cin>>str;当输入MicrosoftVisualStudio6.0!所得结果是str=(B)。
A、MicrosoftVisualStudio6.0!B、MicrosoftC、MicrosoftVisualD、MicrosoftVisualStudio6.0.函数模板(C)。
A、代表某一具体函数B、与模板函数是同一个函数C、与某一个具体的数据类型连用D在ABCDAC1.21。
23int*&p=c;p=&b;4、假设有如下函数定义:voidFun(intx,inty=100);则语旬Fun(5)语句__Fun(5,100)_等价。
面向对象程序设计复习题文档

面向对象程序设计考试题型:1)选择题10题,共20分2)填空题10题,共20分3)程序阅读题3题,共15分4)程序填空题,10空,共20分5)简答题3题,共15分6)编程题1题,共10分一、选择题:1.属于C#语言的关键字( )。
A. abstractB. camelC. SalaryD. Employ答案:A2.C#语言中,值类型包括:基本值类型、结构类型和()。
A.小数类型B.整数类型C.类类型D.枚举类型答案:D3. 假定一个10行20列的二维整型数组,下列哪个定义语句是正确的()。
A. int[]arr = new int[10,20]B. int[]arr = int new[10,20]C. int[,]arr = new int[10,20]D. int[,]arr = new int[20;10]答案:C4.在类作用域中能够通过直接使用该类的()成员名进行访问。
A. 私有B. 公用C. 保护D. 任何答案:D5.小数类型和浮点类型都可以表示小数,正确说法:( )A. 两者没有任何区别B. 小数类型比浮点类型取值范围大C.小数类型比浮点类型精度高D. 小数类型比浮点类型精度低答案:C6.能作为C#程序的基本单位是( )。
A. 字符B. 语句C. 函数D. 源程序文件答案:B7. 可用作C#程序用户标识符的一组标识符是( )。
A. void define +WORDB. a3_b3 _123 YNC. for -abc CaseD. 2a DO sizeof答案:B8.引用类型主要有4种:类类型、数组类型、接口类型和()。
A.对象类型B.字符串类型C.委托类型D.整数类型答案:C9.StreamWriter对象的下列方法,可以向文本文件写入一行带回车和换行的文本的是()。
A.WriteLine()B.Write()C.WritetoEnd()D.Read()答案:A10.建立访问键时,如“新建(N)”菜单中的“N”键,需在菜单标题的字母前添加的符号是( )。
《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案

《面向对象程度设计》课程知识复习学习材料试题与参考答案一、单选题1.下列(C)的调用方式是引用调用。
A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值2.假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的(B)。
A.有参构造函数B.无参构造函数C.复制构造函数D.赋值构造函数3.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a 的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
A.x.aB.x.a()C.x->GetValue()D.x.GetValue()4.C++编译系统确定调用是具体对象的过程称为关联。
C++有(B)关联。
A.1种B.2种C.3种D.4种5.下面有关重载函数的说法中正确的是(C)。
A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同6.如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为(C)。
A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)7.下列对继承关系的描述中,(D)是正确的。
A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;C.在私有继承中,基类中只有公有成员对派生类是可见的;D.在私有继承中,基类中的保护成员对派生类的对象是可见的;8.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。
A.int *p=new int[30];B.int *p=new int(30);C.int *p=new [30];D.*p=new int[30];9.在一个类中可以对一个运算符进行(D)重载。
面向对象程序设计复习题(专升本)

《面向对象程序设计》复习题(专升本)一、填空题1.当建立,程序自动调用该类的构造函数。
2.3.模板对处理数据的类型的要求不同可以分为两种类型:和。
4.5.6.面向对象程序设计的机制提供了重复利用程序资源的一种途径。
7.8.定义模板的关键字是。
9.对象的核心概念就是通常所说的、、。
10.面向对象的英文缩写是:。
11.在面向对象程序设计中,具有相同属性和服务的一组对象的集合称为。
12.已知X=2,y=3,x<y的值是:。
13.#include<iostream>命令中,include的意义是:。
14.C++语言中的每条基本语句以作为结束符。
15.假定一个一维数组的定义为char a[8];则该数组所含元素的个数为,所占存储空间的字节总数为。
16.条件1≤x<10用逻辑表达式表示为。
17.C++程序主要有三种基本控制结构,分别是顺序结构、条件分支结构和。
18.对一个类中的数据成员的初始化,可以通过来实现,也可以通过来实现。
19.假定AB为一个类,则执行AB a(10);语句时,系统自动调用该类的构造函数的次数为。
二、选择题1、 C++对C语言作了很多改进,下列描述中()使得C语言发生了质变,从面向过程变成了面向对象。
A、增加了一些新的运算符;B、允许函数重载,并允许设置缺省参数;C、规定函数说明必须用原型;D、引进了类和对象的概念;2、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( )。
A.类B.对象C.函数体D.数据块3、关于new运算符的下列描述中,()是错误的。
A、它可以用来动态创建对象和对象数组;B、使用它创建的对象或对象数组可以使用运算符delete删除;C、使用它创建对象时要调用构造函数;D、使用它创建对象数组时必须指定初始值;4、()不是构造函数的特征。
A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构造函数可以设置缺省参数;D、构造函数必须指定类型说明。
面向对象程序设计复习题一

面向对象程序设计复习题一一.名词解释1、构造函数自定义数据类型,由数据成员、方法成员构成,具有封装作用2、对象按照数据类型分配的内存空间,可以实现方法的调用3、运算符重载本质是全局对象,但是纳入到了类的管理4、析构函数负责完成对象的创建和初始化5、组合两个类之间的一种关系,其中一个类拥有另一个类的全部操作和数据二.简答。
1、什么是面向过程设计思想?构造函数;拷贝构造函数;赋值运算符2、比较Java和C++?C++中类和结构体具有同等的功能,唯一区别是类缺省成员属性是private,而结构体缺省为public3、重载的意义?重载的意义在于丰富了动作的多样性,但是并不加重程序员的负担。
4、类和结构体的主要区别是什么?当成员默认属性时,类默认为private,而结构体默认为public5、比较继承与组合。
继承与组合解决的都是复用问题,继承解决的是类似生物遗传的复用,组合描述的是装配关系,当二者皆可用的时候要符合组合优先的原则三.辩析(可以不说出对错但是要给出评价)1、派生类方法可以访问父类的全部成员。
符合里氏替换原则2、静态数据成员是属于类的。
public修饰符号允许外界方法访问本作用域内的成员,因此破坏了封装性3、private继承方式不能产生子类。
private方式派生的类不能完成父类的全部功能,所以不能产生子类。
4、不能实例化的类一定是抽象类。
类的构造函数设为非public属性即不能实例化5、面向对象思想适合解决复杂的问题。
静态数据成员不属于对象,因此在main函数之前构造四.综合回答1. 请介绍运算符重载的意义。
答:函数重载实现了用同名函数处理同类操作的问题,降低了程序员的负担;运算符重载的本质是函数重载;运算符是程序员更熟练内容,也是为了降低程序员的负担;2. 谈谈多态的意义。
答:多态实现了用同一个指针管理继承类树并保证函数调用功能丰富性的特点;3. 面向对象程序设计思想的优点和缺点。
答:可以实现软件复用;可管理性、可重用性、可扩展性;开发周期短;强壮性好。
面向对象程序设计期末复习题资料

面向对象程序设计期末复习题一、单项选择题1.对于类中定义的成员,其隐含访问权限为【 B 】A) public B) private C) static D)protected2.关于类和对象不正确的说法是【 B 】A) 类是一种类型,它封装了数据和操作 B) 一个类的对象只有一个C) 对象是类的实例D) 一个对象必属于某个类3.下面关于对象概念的描述中,【 C 】是错误的。
A)对象代表着正在创建的系统中的一个实体B)对象就是C语言中的结构体变量C)对象是一个状态和操作(或方法)的封装体D)对象之间的信息传递是通过消息进行的4. 使用派生类的主要原因是【 A 】。
A)提高代码的可重用性B)提高程序的运行效率C)加强类的封装性D)实现数据的隐藏5. 有关析构函数的说法不正确的是【D 】A)析构函数有且只有一个B)析构函数无任何函数类型C)析构函数没有形参D)析构函数的作用是在对象被撤消时收回先前分配的内存空间6. 声明一个类的对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函数;该函数为【 C 】A) 成员函数;构造函数B) 复制构造函数;析构函数C) 构造函数;析构函数D) 析构函数;复制构造函数7. 下列关于运算符重载的描述中,【 D 】是正确的。
A)运算符重载可以改变操作数的个数B)运算符重载可以改变优先级C)运算符重载可以改变结合性D)运算符重载不可以改变语法结构8. 能用友元函数重载的运算符是【 A】。
A)+ B)= C)[] D)->9.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的【 A 】A) private成员B) protected成员C) public成员D) 友元10.在C++中,要实现动态联编,必须使用【D】调用虚函数A) 类名B) 派生类指针C) 对象名D) 基类指针11.若一个类中含有纯虚函数,则该类称为【 A 】A) 抽象类B) 纯基类C) 派生类D) 基类12.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式【 B 】A) ios:: out B) ios:: inC) ios::in|ios::out D) ios::binary13.通常拷贝构造函数的参数是【 C 】。
面向对象程序设计期末复习题及答案

C++面向对象程序设计复习试题类型1、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
15题,每小题2分,共30分) [主要从作业题目中抽出来]2. 填空题。
(10题,每小题3分,共30分)3、阅读程序,写出程序运行结果。
【也称计算题】(3题,每小题5分,共15分)4、程序编制题【也称综合分析题】。
(第1、2题每题8分,第3题9分,共25分) 重点复习内容打*号是重点,打▲号是编程题出题范围* 基本概念,对象,消息,类。
面向对象系统特性,封装性,继承性,多态性。
*▲C++类的构成,类与对象,构造与析构,动态存储,类嵌套。
静态成员,对象数组,友元。
*函数重载。
运算符重载。
*引用定义与引用参数* 基类与派生类的定义。
* 基类及派生类的访问权(含派生类对基类的访问、通过派生类对象对基类的访问)和初始化。
多继承与虚基类。
*多态性与虚函数。
纯虚函数、抽象类。
*▲函数模板。
*▲使用类来定义对象并在程序中的应用题型样题填空题 1. 假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为_________。
答案:102.可以用p.a的形式访问派生类对象P的基类成员a,其中a是_________。
答案:公有继承的公有成员3.能作为重载函数的调用的依据是_________。
答案:参数个数、参数类型4.在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流是否结束状态的操作函数名称是_________答案:eof5.函数重载是指_________。
答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同6.在派生类中重新定义虚函数时必须在_________ 方面与基类保持一致。
答案:参数个数阅读程序例题【计算题】1.分析以下程序的执行结果#include<iostream.h>class Sample{int x,y;public:Sample() {x=y=0;}Sample(int a,int b) {x=a;y=b;}~Sample(){if(x==y)cout<<“x=y”<<endl;elsecout<<“x!=y”<<endl;}void disp(){cout<<“x=”<<x<<“,y”=<<y<<endl;}};void main(){Sample s1,s2(2,3);s1.disp();s2.disp();}解:x=0,y=0x=2,y=3x!=yx=y2.分析以下程序的执行结果#include<iostream.h>int add(int x,int y){return x+y;}int add(int x,int y,int z){return x+y+z;}void main(){int a=4,b=6,c=10;cout<<add(a,b)<<,<<add(a,b,c)<<endl; }解:10,20 3.分析以下程序执行结果#include<iostream.h>int add(int x,int y){return x+y;}double add(double x,double y){return x+y;}void main(){int a=4,b=6;double c=2.6,d=7.4;cout<<add(a,b)<<","<<add(c,d)<<endl; }解:10,104.分析以下程序执行的结果#include<iostream.h>class Sample{int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;}void disp(){cout<<"x="<<x<<",y="<<y<<endl;}};void main(){Sample s1,s2(1,2),s3(10,20);Sample *pa[3]={&s1,&s2,&s3};for(int i=0;i<3;i++)pa[i]->disp();}解:x=0,y=0x=1,y=2x=10,y=20 5. 分析以下程序的执行结果:#include<iostream.h>class base{int n;public:base(){};base (int a){cout << "constructing base class" << endl; n=a;cout << "n= "<< n << endl;}~base() { cout << "destructing base class" << endl; }};class subs : public base{int m;public:subs(int a, int b) : base(a){cout << "constructing sub class "<< endl; m=b;cout << "m= "<< m << endl;}~subs() { cout << "destructing sub class "<< endl; }};void main (){subs s(1,2);}解:constructing base classn= 1constructing sub classm= 2destructing sub classdestructing base class6.分析以下程序的执行结果:#include <iostream.h>class Sample{protected:int x;public:Sample() { x=0; }Sample(int val) { x=val; }void operator++() { x++; }};class Derived:public Sample{int y;public:Derived():Sample(){ y=0; }Derived(int val1,int val2):Sample(val1){ y=val2; }void operator--(){ x--;y--;}void disp(){cout<<"x="<< x << ",y=" << y << endl; }};void main (){Derived d(3,5);d.disp();d++;d.disp ();d--;d--;d.disp();}解:x=3,y=5x=4,y=5x=2,y=37 分析以下程序执行结果:#include <iostream.h>class A{public:A(char *s) { cout << s << endl; }~A() {}};class B:public A {public:B(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class C:public A{public:C(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class D:public B,public C{public:D(char *sl,char *s2,char *s3,char *s4) :B(sl,s2),C(sl,s3){cout << s4 << endl;}};void main (){D d("class A","class B","class C","class D");}解:class Aclass Bclass Aclass Cclass D 补充例题1.分析以下程序的执行结果#include<iostream.h>template <class T>T max(T x,T y){ return (x>y?x:y); }void main(){ cout<<max(2,5)<<“,”<<max(3.5,2.8)<<endl; }解答:5,3.5 2.分析以下程序的执行结果#include<iostream.h>void main(){int a[]={10,20,30,40},*pa=a;int *&pb=pa;pb++;cout<<*pa<<endl;}解答:输出为:20 3.分析以下程序的执行结果#include<iostream.h>template <class T>T abs(T x){ return (x>0?x:-x); }void main(){ cout<<abs(-3)<<“,”<<abs(-2.6)<<endl; }解答:输出为:3,2.64.分析以下程序的执行结果#include<iostream.h>class Sample{char c1,c2;public:Sample(char a){c2=(c1=a)-32;}void disp(){ cout<<c1<<“转换为”<<c2<<endl; } };void main(){Sample a('a'),b('b');a.disp();b.disp();}解答:a转换为Ab转换为B 5.分析以下程序的执行结果#include<iostream.h>void main(){int a;int &b=a; // 变量引用b=10;cout<<“a=”<<a<<endl;} 解答:输出为:a=10 6.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x++ +10;}void disp(){cout<<“x=”<<x<<endl; }};void main(){ Sample s1(2),s2(s1);s1.disp();s2.disp();}解答:x=3 // ++运算的结果x=12 // 2+107.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x+1;}void disp(){cout<<“x=”<<x<<endl; } };void main(){ Sample s1(2),s2(s1);s2.disp();}解答:输出为:x=3。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单项选择题1、C++对C语言作了很多改进,下列描述中____ 使得C语言发生了质变,从面向过程变成了面向对象。
A、增加了一些新的运算符;B、允许函数重载,并允许设置缺省参数;C、规定函数说明必须用原型;D、引进了类和对象的概念。
2、关于成员函数特征的下列描述中,____ 是错误的。
A、成员函数一定是内联函数;B、成员函数可以重载;C、成员函数可以设置缺省参数值;D、成员函数可以是静态的。
3、下列静态数据成员的特性中,____ 是错误的。
A、成员函数一定是内联函数;B、成员函数可以重载;C、静态数据成员不是所有对象所共用的;D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符。
4、友元的作用是____ 。
A、提高程序的运用效率;B、加强类的封装性;C、实现数据的隐藏性;D、增加成员函数的种类。
5、____ 不是构造函数的特征。
A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构造函数可以设置缺省参数;D、构造函数必须指定类型说明。
6、若有一个MyClass类,则执行语句“MyClass a,b(2),c[2]*p;”后,自动调用该类的构造函数____ 次。
A、1B、2C、3D、47、假定AB为一个类,则执行AB x;语句时将自动调用该类的____ 。
A、有参构造函数;B、无参构造函数;C、拷贝构造函数;D、赋值构造函数。
8、下列虚基类的声明中,正确的是____ 。
A、class virtual B:public AB、virtual class B:public AC、class B:public A virtualD、class B: virtual public A9、如果一个类至少有一个纯虚函数,那么就称该类为____ 。
A、抽象类B、虚函数C、派生类D、以上都不对10、下列运算符中,____ 运算符在C++中不能重载。
A、? :B、[ ]C、newD、&&11、关于C++与C语言的关系的描述中,____ 是错误的。
A、C语言是C++的一个子集;B、C++是兼容C语言的;C、C++对C语言进行了一些改进;D、C++和C语言都是面向对象的。
12、下列不是类的成员函数的是____ 。
A、构造函数;B、析构函数;C、友元函数;D、复制构造函数。
13、下面对类中静态数据成员的描述中,正确的是____ 。
A、静态数据成员是类的所有对象共享的数据;B、类的每个对象都有自己的静态数据成员;C、类的不同对象有不同的静态数据成员;D、静态数据成员不能通过类的对象调用。
14、C++中对于类中定义的成员,其默认的访问权限为____ 。
A、publicB、privateC、protectedD、static15、每个类____ 构造函数。
A、只能有一个;B、只可有公有的;C、可以有多个;D、只可有缺省的。
16、类的析构函数的作用是____ 。
A、作为类的一般成员函数;B、类的初始化;C、对象的初始化;D、对象扫尾处理。
17、基类中的____ 不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。
A、公有成员;B、私有成员;C、保护成员;D、私有成员函数。
18、若要把函数void f( )定义为类aClass的友元函数,则应该在类aClass的定义中加入的语句是____ 。
A、void f( );B、static void f( );C、friend f( );D、friend voidf( )。
19、C++类体系中,不能被派生类继承的有____ 。
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、在下面的4个关键字中,____是用来说明虚函数的。
A、virtualB、publicC、protectedD、private26、cin是某个类的标准对象,该类是____。
A、ostreamB、istreamC、stdoutD、stdin27、设置虚基类的目的是____。
A. 简化程序;B. 消除二义性;C. 提高运行效率;D. 减少目标代码。
28、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是____。
A、testDefaulParam(5);B、testDefaulParam(5,8);C、testDefaulParam(5,'#');D、testDefaulParam(0,0,'*')。
29、下列表示引用的方法中,正确的是____,已知:int a=1000。
A、int &x=a;B、char &y;C、int &z=1000;D、float &t=&a。
30、下面描述中,表达错误的是____。
A、公用继承时基类中的public成员在派生类中仍是public的;B、私用继承时基类中的private成员在派生类中仍是private的;C、公用继承时基类中的protected成员在派生类中仍是protected的;D、私有继承时基类中的public成员在派生类中是private的。
31、下列关于C++函数的说明中,正确的是____。
A、内联函数就是定义在另一个函数体内部的函数;B、函数体的最后一条语句必须是return语句;C、调用一个函数之前,如果还没有定义这个函数,必须先声明其原型;D、编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式。
32、由于常对象不能被更新,因此____。
A、通过常对象只能调用它的常成员函数;B、通过常对象只能调用静态成员函数;C、常对象的成员都是常成员;D、通过常对象可以调用任何不改变对象值的成员函数。
33、关于构造函数特点的描述中,错误的是____。
A、定义构造函数必须指出类型;B、构造函数的名字与该类的类名相同;C、一个类中可定义0至多个构造函数;D、构造函数是一种成员函数。
34、假定MyCIass为一个类,那么下列的函数说明中,____为该类的无参构造函数。
A、void MyClass();B、~MyClass(int n);C、MyClass( );D、~MyClass( )。
35、当一个类的某个函数被说明为virtual时,该函数在该类及其所有派生类中____。
A、都是虚函数;B、只有被重新说明为virtual时才是虚函数;C、都不是虚函数;D、上面都不正确36、下列是重载加法运算符的函数原型声明,其中错误的是____。
A、MyClass operator+(double,double);B、MyClass operator+(double,MyClass);C、MyClass operator+(MyClass,double);D、MyClass operator+(MyClass,MyClass)。
37、派生类的构造函数的成员初始化表中,不能包含____。
A. 基类的构造函数;B. 派生类中子对象的初始化;C. 基类中子对象的初始化;D. 派生类中一般数据成员的初始化。
38、实现运行时的多态性要使用____。
A、重载函数;B、析构函数;C、构造函数;D、虚函数。
39、下列表示引用的方法中,正确的是____,已知:int a=1000。
A、int &x=a;B、char &y;C、int &z=1000;D、float &t=&a。
40、下面描述中,表达错误的是____。
A、公用继承时基类中的public成员在派生类中仍是public的;B、私用继承时基类中的private成员在派生类中仍是private的;C、公用继承时基类中的protected成员在派生类中仍是protected的;D、私有继承时基类中的public成员在派生类中是private的。
41、下列关于C++函数的说明中,正确的是____。
A、内联函数就是定义在另一个函数体内部的函数;B、函数体的最后一条语句必须是return语句;C、调用一个函数之前,如果还没有定义这个函数,必须先声明其原型;D、编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式。
42、对重载函数形参的描述中,错误的是____。
A、参数的个数可能不同;B、参数的类型可能不同;C、参数的顺序可能不同;D、参数的个数、类型、顺序都相同,只是函数的返回值类型不同。
43、下列给字符数组进行的初始化中,不正确的是____。
A、char s1[]="abcd";B、char s2[3]={'x','y','\0'};C、char s3[]={'a','x','y','\0'};D、char s4[6]={"xyz","mnp"}。
44、通常的拷贝构造函数的参数是____。
A、某个对象名;B、某个对象成员名;C、某个对象的引用;D、某个对象的指针名。
45、当一个类的某个函数被说明为virtual时,该函数在该类及其所有派生类中____。
A、都是虚函数;B、只有被重新说明为virtual时才是虚函数;C、都不是虚函数;D、上面都不正确46、关于常成员的描述中,错误的是____。
A、常成员包含常数据成员和常成员函数两种;B、常数据成员必须是公有的;C、常数据成员要使用构造函数成员初始化列表进行初始化;D、常对象只能调用它的常成员函数,不能调用其它的成员函数。