当前位置:编程学习 > C/C++ >>

谁能告诉我C++考试的题目

答案:

《C++面向对象程序设计》试题 (A卷)

(满分:100分  时间:150分钟  日期:2005.1.10)

 

一、(共20分,每题2分)单项选择

1.       已定义了一个类A并有语句A* pa=new A(5);  那么以下说法正确的是:A
A. 该语句会创建A类的一个对象,并将此对象的地址赋给指针pa;
B. 该语句会创建A类的5个对象,且它们的地址是连续的;
C. 当指针变量pa超出其作用域时,pa和为对象分配的空间都将被自动释放;
D. 类A中一定有一个显式定义的构造函数和一个显式定义的虚析构函数;

2.       定义类A的非静态成员函数A&f(A& one)时,需有语句return exp;则exp不能是:B
A.类A中类型为A的静态数据成员     B. f中用语句A a = one; 定义的量a
C. one                                        D. *this

3.       在一个类中,下列哪些成员可以是多个?D
A. 无参构造函数                     B. 析构函数
C. 原型相同的非静态成员函数        D. 静态成员函数

4.       对类T中的下列成员,若不考虑代码优化,一般来说它们中的哪个执行起来最慢?C
A. 缺省的无参构造函数                      B. 缺省的拷贝构造函数      
C. T f( ) { T  t;  return t; }              D.  不能判定A、B、C哪个最慢

5.      对函数原型为int& min(int& a, int& b);的全局函数,下列语句块哪个是错误的:C
A. int x=10,y=5;    min(x,y)=100;       B. int x=10,y=5, z;  z=min(x,y+=x);
C. int x=10,y=5;    min(x,10)=y;        D. int x=10,y=5;    x=min(x,y);

6.      关于拷贝构造函数错误的说法有:B
A. 拷贝构造函数是一种特殊的构造函数,且不能在类中进行函数重载。
B. 若自定义派生类的拷贝构造函数,那么也必须自定义基类的拷贝构造函数。
C. 拷贝构造函数只能有一个参数,且为常量引用或非常量引用。
D. 拷贝构造函数不允许在函数体中使用return语句。

7.      下列对虚基类声明正确的是: B
A. class virtual B: public A             B. class B: virtual public A 
C. class B: public A virtual             D. virtual class B: public A 

8.      若有语句A*const p=new B;,其中类B是从类A直接派生得到的,那么下列说法错误的是:D
A. 若要执行语句 p->f( );,那么类A中一定有一个与f( )函数匹配的函数声明。
B. 类B一定是通过public继承方式从类A派生的。
C. 类B的构造函数中,至少有一个无参的或提供全部缺省参数的构造函数。
D. 通过指针p,只能访问类中的常量成员函数或静态成员函数。

9.       下面说明的哪个数据不能作为类T的数据成员定义。D
A. T* pT                                               B. class Q{ } q1,q2;
C. static T t;                                D. const T t;

10.   下列哪种运算符可以被重载:D
A. sizeof     B. ::   C.  ?:    D. [ ]

二、(共15分,每题3分)回答下列各题,可以举例说明。

1.       说明基类中的public、protected和 private成员分别在public、protected和private继承方式下在派生类中的可访问性。略

2.       若类A有私有数据成员int n,哪些情况下,在一个函数的函数体中能够直接访问A类的数据成员n。(至少三种)

如: a)void A::f( ) { int k=n;}   

b)void A::g(A& one) { n+=one.n; }
c) A的友员函数   int h(A& one) {return one.n;}

 

3.       哪些情况下,定义构造函数时必须使用初始化列表。(至少三种)

4.       将一个基类的析构函数定义为虚函数的作用和目的是什么?

5.       为什么在类中不能用成员函数void f(int&) 重载(overload)本类的成员函数int f(int)?

会产生二义性

三、(共10分,每题1分)判断正误,只需回答“正确”或“错误”。 2468正确

1.       this指针既可以是指向常量对象的非常量指针,也可以是指向非常量对象的常量指针。

2.       即使不创建类的实例对象,也可以在main函数中访问该类的公有静态成员函数。

3.       在一个函数体内不允许定义其它函数,同样在一个类中也不允许定义其它类。

4.       若想在一个cpp文件中使用一个模板类,那么在预编译后,此文件必须含有该模板类的全部声明和定义。

5.       在捕获异常时,异常会进行自动类型转换并按照异常类型的同一性进行匹配。

6.       一个抽象类的后裔类,既可以是抽象类,也可以是具体类。

7.       类A中的转换函数可定义为: int operator A( ) const {return 0;}.

8.       类的多个实例对象可共享本类的虚拟表。

9.       用const修饰的成员函数只能通过常量对象调用。

10.   类B是类A的派生类,类C是类A的友员类,那么类C也是类B的友员类。

上一个:C++中提到的类中的析构函数,有什么作用?
下一个:c++的一个友元重载编译出现错误

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,