精品文档
181. 若采用x.abc(y)表达式调用一个成员函数,在成员函数中使用的________就代表了类外的x对象。
182. 若采用p->abc(y)表达式调用一个成员函数,在成员函数中使用的________就代表了类外的p指针。
183. 内联函数的定义模块与________模块必须放在同一个文件中。 184.假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,在该函数体中(能够/不能够)__________向*this或其成员赋值。
185.在一个用数组实现的队列类中,包含有两个数据成员,一个指明队首元素位置,另一个指明____________。
186. 在一个用数组实现的队列类中,包含有两个数据成员,一个指明队列长度,另一个指明__________元素的位置。
187. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则插入一个新元素的位置为__________。
188. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则删除一个元素后队首的位置为__________。
189. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队列为空的条件为__________。
190. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队列为满的条件为__________。
191. 当一个队列为空时,不能对其做________元素的操作。 192. 当一个队列为满时,不能对其做________元素的操作。 193.从一个队列中删除元素就是删除________位置上的元素。
194.向一个队列中插入元素就是把该元素放到________元素的后一位置上。 195.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,当链队非空时,_____________指向队首结点的后继(即下一个)结点。
196. 在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,当链队非空时,新插入结点的地址应当赋给___________所指结点的next域。
197. 在一个用链表实现的队列类中,队尾结点的指针域的值为________。
198. 在一个用链表实现的队列类中,若链队中只含有一个结点,则队首指针的值与队尾指针的值________。
199. 在一个用链表实现的队列类中,若链队为空或只含有一个结点,则队首指针的值与队尾指针的值________。
200. 在一个用链表实现的队列类中,若队首指针与队尾指针的值不同,则说明链队中至少包含有________个结点。
201.一个类的__________函数实现对该类对象的初始化功能。
202.一个类的__________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。
203.当用户为一个类定义有____________时,则系统不会为该类再自动生成一个默认构造函数。
204.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为__________。
205.假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为__________。
206.定义类动态对象数组时,其元素只能靠自动调用该类的____________来进行
.
精品文档
初始化。
207.在一个类中定义拷贝构造函数的目的,是为了当利用该类的一个对象初始化另一个对象时,能够避免这两个对象的同一指针同时指向同一块__________________。
208.为了释放类对象中指针成员所指向的动态存储空间,则需要为该类定义____________。
209. 假定 AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类构造函数的次数为________。
210.假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为________。
211.对类中对象成员的初始化是通过在构造函数中给出的______________来实现的。
212.对类中常量成员的初始化是通过在构造函数中给出的______________来实现的。
213.对类中引用成员的初始化只能通过在构造函数中给出的______________来实现。
214.对类中一般数据成员的初始化既可以通过在构造函数中给出的初始化表来实现,也可以通过构造函数中的____________来实现。
215. 假定要把aa定义为AB类中的一个常量整数型数据成员,则定义语句为____________。
216. 假定要把aa定义为AB类中的一个引用整数型数据成员,则定义语句为____________。
217. 假定AB类中只包含一个整型数据成员a,并且它是一个常量成员,若利用参数aa对其进行初始化,则该类的构造函数的定义为____________________。
218. 假定AB类中只包含一个整型数据成员a,并且它是一个引用成员,若利用引用参数aa对其进行初始化,则该类的构造函数的定义为____________________。
219.假定指针p指向一个动态分配的类对象,则当执行“delete p;”语句时,在释放p所指向的动态存储空间之前将自动调用该类的____________。
220.假定用户为类AB定义了一个构造函数“AB(int aa) {a=aa;}”,则系统(会/不会)_________为该类自动定义一个无参构造函数\{}\。
221. 假定用户为类AB定义了一个构造函数“AB(int aa, char *bb=NULL):a(aa),b(bb){}”,则该类中至少包含有__________个数据成员。
222.假定用户为类AB定义了一个构造函数“AB(int aa) {a=aa;}”,该构造函数实现对数据成员_________的初始化。
223.假定用户为类AB定义了一个构造函数“AB(int aa=0):a(aa){}”,则定义该类的对象时,可以有________种不同的定义格式。
224.假定用户为类AB定义了一个构造函数“AB(int aa):a(aa){}”,则定义该类的对象时,有________种定义格式。
225.假定用户只为类AB定义了一个构造函数“AB(int aa, int bb=0) {a=aa; b=bb;}”,则定义该类的对象时,其实参表中至多带有_________个实参。
226.假定用户只为类AB定义了一个构造函数“AB(int aa, int bb=0) {a=aa; b=bb;}”,则定义该类的对象时,其实参表中至少带有_________个实参。
227.假定用户为类AB定义了一个构造函数“AB(int aa=0, int bb=0) {a=aa; b=bb;}”,则定义该类的对象时,可以有
.
精品文档
________种不同的定义格式。
228.假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}”,则定义该类对象x的定义语句“AB x();”是_________(正确/错误)的。
229.假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}”,则定义该类对象x的定义语句“AB x;”是_________(正确/错误)的。
230.假定用户只为类AB定义了一个构造函数“AB():a(0),b(0){}”,则定义该类对象x的定义语句“AB x(5);”是_________(正确/错误)的。
231.假定AB为一个类,则类定义体中的“AB(AB x);”语句为该类______________的原型语句。
232.假定AB为一个类,则该类的拷贝构造函数的函数头为_____________。 233.假定AB为一个类,该类中含有一个指向动态数组空间的指针成员pa,则在该类的析构函数中应该包含有一条______________语句。
234. 静态成员函数____访问类的静态数据成员, ____访问类的非静态数据成员。
235. 静态数据成员必须在所有函数的定义体外进行__________。
236. 一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明必须在函数名前加上__________的限定。
237. 重载运算符时,该运算符的__________、结合性以及操作符的个数不允许改变。
238. 一个单目运算符作为类的成员函数重载时有________个参数;如果作为独立函数重载,则有________个参数。
239. 一个双单目运算符作为类的成员函数重载时有________个参数;如果作为独立函数重载,则有________个参数。
240. 除了__________运算符外,其他重载的运算符都可以被派生类继承。
241. 作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有________个操作数。
242. 在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_____________。
243. 重载插入运算符<<时,其运算符函数的返回值类型应当是____________。 244. 重载抽取运算符>>时,其运算符函数的返回值类型应当是____________。 245. 重载插入运算符<<或抽取运算符>>时,其运算符函数的参数有________个。 246. 重载插入运算符<<或抽取运算符>>时,其运算符函数不能被定义为类的________函数。
247. 类型转换函数没有____________类型,而且参数表为____________。 248. 在一个或若干个类的基础上构造一个新类,被称为___________。
249. 派生类的成员函数可以直接访问基类的__________成员,不能直接访问基类的 ______成员。
250. 当保护继承时,基类的__________成员在派生类中成为保护成员,派生类对象不能直接访问基类的__________成员。
251. 在定义一个派生类时,使用__________关键字或者不显式地使用它则表示为__________继承。
252. 若多个基类及其派生类中都定义了同名函数成员,要访问相应函数时,就需要在函数名前加上______和类区分符。
253. 若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以____________的方式直接继承它。
254. 引进虚基类的根本目的是为了消除____________。
.
精品文档
255. 在每个成员函数中,隐含的第一个参数的参数名为________。
四、程序填充
21. 已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重载的运算符[ ]要对下标是否越界进行检查。 class ARRAY{
int *v; //指向存放数组数据的空间 int s; //数组大小 public:
ARRAY(int a[], int n); ~ ARRAY(){delete []v;} int size(){ return s;} int& operator[](int n); };
___(1)___ operator[](int n) //[ ]的运算符成员函数定义 {
if(n<0 || ___(2)___) {cerr<<\下标越界!\ return ___(3)___; }
(1) (2) (3)
22. 已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。 class ARRAY{
int *v; //指向存放数组数据的空间 int s; //数组大小 public:
ARRAY(int a[], int n); ~ ARRAY(){delete []v;} int size(){ return s;} int& operator[](int n); };
___(1)___ ARRAY(int a[], int n) {
if(n<=0) {v=NULL;s=0;return;} s=n;
v=___(2)___;
for(int i=0; i (1) (2) (3) . 精品文档 23. 下面是一维数组类ARRAY的定义,ARRAY与普通一维数组区别是:(a)用()而不是[]进行下标访问,(2)下标从1而不是从0开始,(c)要对下标是否越界进行检查。 class ARRAY{ int *v; //指向存放数组数据的空间 int s; //数组大小 public: ARRAY(int a[], int n); ~ ARRAY(){delete []v;} int size(){ return s;} int& operator()(int n); }; ___(1)___ operator()(int n) { // ()的运算符函数定义 if(___(2)___) {cerr<<\下标越界!\ return ___(3)___; } (1) (2) (3) 24. 已知一个类的定义如下: #include void SetA(int aa[], int nn); //用数组aa初始化数据成员a, //用nn初始化数据成员n int MaxA(); //从数组a中前n个元素中查找最大值 void SortA(); //采用选择排序的方法对数组a中前n个元素 //进行从小到大排序 void InsertA();//采用插入排序的方法对数组a中前n个元素进行从小到大排序 void PrintA(); //依次输出数组a中的前n个元素 }; 该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。 int ____(1)_____ { int x=a[0]; for(int i=1; i (1) (2) (3) .
《c++》复习题集及答案 (2)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)