return0;
}
A)count=0B)count=1C)count=2D)count=3
49.关于类模板的说法正确的是:
(B)
A)类模板的主要作用是生成抽象类
B)类模板实例化时,编译器将根据给出的模板实参生成一个类
C)在类模板中的数据成员具有同样类型
D)类模板中的成员函数没有返回值
50.以下关键字不能用来声明类的访问权限的是:
(C)
A)publicB)privateC)staticD)protected
51.实现运行时的多态性采用(D)
A)重载函数B)构造函数C)析构函数D)虚函数
52.下列说明语句中正确的是:
(D)
A)inta,&ra=a,&&ref=ra;B)int&refa[10];
C)inta,&ra=a,&*refp=&ra;D)int*pi,*&pref=pi;
53.对C++语言和C语言的兼容性,描述正确的是:
(A)
A)C++兼容CB)C++部分兼容CC)C++不兼容CD)C兼容C++
54.在C++中使用流进行输入输出,其中用于屏幕输出的对象是:
(C)
A)cerrB)cinC)coutD)cfile
55.对使用关键字new所开辟的动态存储空间,释放时必须使用(C)
A)freeB)createC)deleteD)realse
56.如没有使用private关键字定义类的数据成员,则默认为(A)
A)privateB)publicC)protectedD)friend
57.在函数调用时,如某一默认参数要指明一个特定值,则有(A)
A)其之前所有参数都必须赋值B)其之后所有参数都必须赋值
C)其前、后所有参数都必须赋值D)其前、后所有参数都不必赋值
58.下列哪个类型函数不适合声明为内联函数(A)
A)函数体语句较多B)函数体语句较少C)函数执行时间较短D)函数执行时间过长
59.intFunc(int,int);不可与下列哪个函数构成重载(B)
A)intFunc(int,int,int);B)doubleFunc(int,int);
C)doubleFunc(double,double);D)doubleFunc(int,double);
60.类的私有成员可在何处访问(D)
A)通过子类的对象访问B)本类及子类的成员函数中
C)通过该类对象访问D)本类的成员函数中
61.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是:
(A)
A)编译器总是自动创建一个不带参数的构造函数B)这个类没有构造函数
C)这个类不需要构造函数D)该类不能通过编译
62.一个类可包含析构函数的个数是:
(B)
A)0个B)1个C)0个或1个D)0个或多个
63.一个类可包含构造函数的个数是:
(D)
A)0个B)0个或1个C)0个或多个D)1个或多个
64.this指针存在的目的是:
(B)
A)保证基类公有成员在子类中可以被访问
B)保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
C)保证基类保护成员在子类中可以被访问
D)保证基类私有成员在子类中可以被访问
65.下列关于类的权限的描述错误的是:
(A)
A)类本身的成员函数只能访问自身的私有成员
B)类的对象只能访问该类的公有成员
C)普通函数不能直接访问类的公有成员,必须通过对象访问
D)一个类可以将另一个类的对象作为成员
66.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是:
(B)
A)A类构造函数先执行B)成员构造函数先执行
C)两者并行执行D)不能确定
67.下列描述错误的是:
(A)
A)在创建对象前,静态成员不存在B)静态成员是类的成员
C)静态成员不能是虚函数D)静态成员函数不能直接访问非静态成员
68.对于友元描述正确的是:
(B)
A)友元是本类的成员函数B)友元不是本类的成员函数
C)友元不是函数D)友元不能访问本类私有成员
69.在哪种派生方式中,派生类可以访问基类中的protected成员(AB)
A)public和privateB)public和protected
C)protected和privateD)仅protected
70.下面的哪个保留字不能作为函数的返回类型(C)
A)voidB)intC)newD)long
71.假定有类AB,有相应的构造函数定义,能正确执行“ABa(4),b(5),c[3],*p[2]={&a,&b};”语句,请问执行完此语句后共调用该类构造函数的次数为(C)
A)3B)4C)5D)6
72.假定有类AB,有相应的构造函数定义,能正确执行“ABa(4),b(5),c[3],*p[2]={&a,&b};”语句,请问执行完此语句后共调用该类析构函数的次数为(C)
A)3B)4C)5D)6
73.对类中声明的变量,下列描述中正确的是:
(B)
A)属于全局变量B)属于该类,某些情况下也可被该类不同实例所共享
C)只属于该类D)任何情况下都可被该类所有实例共享
74.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为(C)
A)ABoperator+(AB&A,AB&B);B)AB&operator+(ABA);
C)ABoperator+(AB&A);D)AB*operator+(ABA);
二、填空题(10个,20分)
假定有如下定义:
intx;,若要将整型变量y定义为变量x的引用,则应使用的定义语句是
int&y=x;。
具有相同函数名但具有不同参数表的函数称为重载函数。
'
执行完下列三条语句后,指针变量c指向b。
Inta,b,*c=&a;
int*&p=c;
p=&b;
假设有如下函数定义:
voidFun(intx,inty=100);则语旬Fun(5)语句Fun(5,100)等价。
在一个C++程序中,每个变量都必须遵循先定义后使用的原则。
定义一个函数时,若只允许函数体访问形参的值而不允许修改它的值,则应把该形参声明为常量,即在该形参声明的前面加上const关键字进行修饰。
在一个函数的定义或声明前加上关键字inline时,该函数就声明为内联函数。
静态整型变量的默认初始值是0。
在撤销类的对象时,C++程序将自动调用该对象的析构函数。
类中的构造函数是一个特殊的成员函数,它由类的对象自动调用,它的作用是为对象分配内存,数据成员初始化。
对类中的成员函数和属性的访问是通过public、protected和private这3个关键字来控制的。
delete运算符删除new运算符所动态分配的内存空间。
假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为
MyClass()。
类中构造函数有一个或多个,析构函数有一个。
类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的数据成员,共同行为被描述为类中的成员函数。
若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句
friendclassFriendClass;。
___new_运算符对指定类型对象动态分配内存并返回该类型的___指针__。
若要把函数voidFriendFunction()定义为类MyClass的友元函数,则应在类MyClass的定义中加入语句___friendvoidFriendFunction();。
类的具体表现是通过定义___对象______来操作的。
在定义类的对象时,C++程序将自动调用该对象的___构造____函数初始化对象自身。
一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为___private___权限,而把成员函数(方法)定义为___public___权限。
在类中定义和实现的函数称为__内联函数__。
非成员函数应声明为类的___友元函数___才能访问这个类的private成员。
垂直访问时,保护成员的访问控制权限与____公有_____成员相同。
利用继承能够实现___代码复用___。
这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件。
派生类对基类的继承有三种方式:
public、protected和private。
多继承情况下,派生类的构造函数的执行顺序取决于___定义__派生类时所指定的各基类的顺序。
C++提供的__多继承__机制允许一个派生类继承多个基类,即使这些基类是相互无关的。
派生类可以调用其___定义___中不具备的数据和操作。
对基类数据成员的初始化必须在派生类构造函数中的初始化列表处执行。
如果类Alpha继承了类Beta,则类Alpha称为派生类,类Beta称为基类。
设置虚基类的目的是为了消除二义性,可通过virtual标识虚基类。
若多继承时,多个基类中拥有一个同名的成员,则不能用调整访问权限确定对该成员的访问。
多继承可以视为是单继承的扩展。
类继承中,缺省的继承方式是private。
当用protected继承从基类派生→个类时,基类的public成员成为派生类的protected成员,protected成员成为派生类的protected成员。
_公有派生_类的对象可作为基类的对象处理。
指向基类的对象的指针变量也可以指向公有派生类的对象。
类之间的”有”关系代表组合,”是”关系代表继承。
在析构函数中调用虚函数时,采用静态联编。
动态联编是在虚函数的支持下实现的,它通过指针或引用来调用该函数操作。
动态联编中直到程序运行时才能确定调用哪个函数:
耐静态联编刷则是在程序编译时进行的。
C++中不支持虚构造函数,但支持虚析构函数。
静态联编所支持的多态性称为编译时多态性,
动态联编所支持的多态性则称为运行时多态性,动态多态性由虚函数来支持。
在类定义中,将=0置于虚函数的函数原型的末尾可以将该函数声明为纯虚函数。
抽象类不能定义对象,但可以声明指针或引用作为参数类型,函数返回类型或显式转换类型。
对虚函数使用对象指针或引用调用,系统使用动态联编:
使用对象调用时,系统使用静态联编。
在一个成员函数内调用一个虚函数时,对该虚函数的调用进行动态联编。
带有纯虚函数的类称为抽象类,它只能作为基类来使用。
要在类的对象上使用运算符,除了运算符=和&以外,其他的运算符都必须被重载。
在C++中,只能重载为类的成员函数的运算符是=、()、[]、->、new、de