c++试题及答案(3)

上传人:F****n 文档编号:102552374 上传时间:2019-10-03 格式:DOC 页数:13 大小:33KB
返回 下载 相关 举报
c++试题及答案(3)_第1页
第1页 / 共13页
c++试题及答案(3)_第2页
第2页 / 共13页
c++试题及答案(3)_第3页
第3页 / 共13页
c++试题及答案(3)_第4页
第4页 / 共13页
c++试题及答案(3)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《c++试题及答案(3)》由会员分享,可在线阅读,更多相关《c++试题及答案(3)(13页珍藏版)》请在金锄头文库上搜索。

1、一、(共10分,每题1分)单项选择 1. 对于全局函数 int f(void) ,与其完全等价的函数原型为: cA. int& f( ); B. int f(void ) const; C. const int f( ); D. A、B、C都不是 2. 类A中有唯一的非静态成员函数int f(A& one)和私有的数据成员int x;,那么在此成员函数的函数体中可以有语句: dA. return one.f(this); B. x=f(this); C. this-f(x.one); D. int* const pX=&one.x; 3. 下面关于new 和delete操作符的说法,哪个是不正

2、确的: dA. 使用new操作符,可以动态分配全局堆中的内存资源。 B. 若p的类型已由A*强制转换为void *,那么执行语句delete p;时,类A的析构函数不会被调用。 C. 实现全局函数时,new和delete通常成对地出现在由一对匹配的花括号限定的语句块中。 D. 执行语句A * p=new A100;时,类A的构造函数只会被调用1次。 4. 类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的: cA. TM* a; B. TN& a; C. TM a; D. TN a; 5. 类B是通过public继承方式从类A派生而来的,且类A和类B都有完整的实现代码,

3、那么下列说法正确的是: A. 类B中具有pubic可访问性的成员函数个数一定不少于类A中public成员函数的个数。 B. 一个类B的实例对象占用的内存空间一定不少于一个类A的实例对象占用的内存空间。 C. 只要类B中的构造函数都是public的,在main函数中就可以创建类B的实例对象。 D. 类A和类B中的同名虚函数的返回值类型必须完全一致。 6. 下列哪种函数可以是虚的: dA. 自定义的构造函数 B. 拷贝构造函数 C. 静态成员函数 D. 析构函数 7. 类A有一个实例化的常量对象a,那么下面的说法中不正确的是: A. 类A中的非静态数据成员一定都是常量成员。 B. 通过a可以直接调

4、用类A的常量成员函数。 C. a不能直接作为左值表达式使用。 D. a可以是静态常量对象。 8. 在不考虑强制类型转换的情况下,关于类中常量成员函数的下列说法不正确的是: A. 常量成员函数中不能修改本类中的非静态数据成员。 B. 常量成员函数中可以调用本类中的任何静态成员函数。 C. 常量成员函数的返回值只能是void或常量。 D. 若常量成员函数中调用虚函数f,那么函数f在本类中也一定是一个常量成员函数。 9. 类C是以多重继承的方式从类A和类B继承而来的,类A和类B无公共的基类,那么: A. 类C的继承方式只能采用public继承。 B. 可改用单继承的方式实现类C的同样功能。 C. 类

5、A和类B至少有一个是抽象类。 D. 类A和类B至少有一个是虚基类。 10. 下列哪种用法不能体现类A和类B之间的组合关系: A. 类A中声明数据成员B b; B. 类A中声明数据成员B* b; C. 类A中声明数据成员const B& b; D. 类A中声明成员函数 B func( B& obj); 二、(共10分,每题2分,多选、少选、错选都不得分)多项选择 1. 下面关于指针变量和引用变量的说法正确的是: A. 指针变量存放的是内存地址,并且可以置为0。 B. 定义引用变量时,必须同时指明具体被引用的对象或变量。 C. 使用取地址操作符,可以取得指针变量自身的地址,但取不到引用变量自身的地

6、址。 D. 类中的数据成员可以是指针变量,但不能是引用变量。 2. 类A中有唯一的一个公有成员函数f,对于类A的一个对象a,执行语句 a.f(100);成功,那么f 的函数原型可以为: A. A& f( int, int=50); B.void f(int&) const; C.const A * f(const int ); D. A f( const int&) const; 3. 关于类中重载赋值运算符的正确说法是: A. 由编译器提供的缺省赋值函数具有public访问性并且执行按位赋值。 B. 在重载派生类的赋值操作时,不但要实现派生类中数据成员的赋值,还要负责基类中数据成员的赋值。

7、C. 只有在类中含有指针数据成员或引用数据成员时,才需要重载类的赋值操作。 D. 通过修改类A的声明或定义,可以禁止用户在类A对象间进行任何赋值操作。 4. 在类的静态成员函数的实现体中,可以访问或调用: A. 本类中的静态数据成员 B. 本类中非静态的常量数据成员 C. 本类中其它的静态成员函数 D. 本类中非静态的成员函数 5. 关于异常和C+提供的异常处理机制正确的说法是: A. 若程序员预见到程序中的异常,则一定可以通过修改程序代码来避免异常出现。 B. 使用dynamic_cast操作符可能会产生异常。 C. 异常可以用catch进行捕获处理。 D. 异常可以是对象,也可以是普通整数

8、。 三、(共20分,每题2分)判断正误,对于你认为错误的论述,说明原因或举出反例。 1. 函数体内声明的静态变量,至多只会被初始化一次。 2. 对于同一个类中的两个非静态成员函数,它们的函数的名称、参数类型、参数个数、参数顺序以及返回值的类型不能完全相同。 3. inline函数表示编译器一定会将函数体直接插入到调用此函数的地方,这样可以加快程序的运行速度。 4. 每个cpp文件是单独编译的,但一个程序中多个cpp文件的编译顺序是不固定的。 5. 将类A所有构造函数的可访问性都限制为私有的,那么在main函数中不可能得到类A的实例对象。 6. 名字空间是可以多层嵌套的;对于类A中的函数成员和数

9、据成员,它们都属于类名A代表的一层名字空间。 7. 若在类Base和派生类Derived中,分别声明一个同名的整型成员变量int x; ,那么通过Derived类的实例对象,不可能输出基类Base中的变量x的值。 8. 若类A是类B的友员类,且类B是类C的友员类,那么类A也是类C的友员类。 9. 虽然抽象类的析构函数可以是纯虚函数,但要实例化其派生类对象,仍必须提供抽象基类中析构函数的函数体。 10. 构造函数的初始化列表中的内容,不会影响构造对象中成员数据的初始化顺序。 四、(5分)写出下面程序的运行结果 #include class A public: A(int v1)(v1) f( )

10、; virtual A( ) f( ); virtual void f( ) +count; x+=10;Show( ); virtual void Show ( ) const coutcount=count x=xendl; protected: static int count; private: int x; ; class B:public A public: B(int v1,int v2):A(v1),y(v2) f( ); virtual B( ) f( ); virtual void f( ) +count;y+=50; Show ( ); virtual void Show

11、 ( ) const coutcount=count y=yf( ); delete p; return 0; 五、(5分)写出下面程序的运行结果 #include class A private: friend class B; A(int val=0):data(val),use(1) int use, data; ; class B public: B(int val=0):pa(new A(val) B( ) if(-pa-use=0) delete pa; B(const B& rhs) +rhs-use;pa=rhs.pa; B& operator=(const B& rhs);

12、A* operator-( ) const return pa; void Display( ) const coutdata=data use=useuse=0) delete pa; +rhs-use; pa=rhs.pa; return *this; int main() B b1(1),b2(b1),b3(3); b1.Display(); b2.Display(); b3.Display(); b3=b1; b1.Display(); b3.Display(); return 0; 六、(共20分)回答下列各题 1. 说明类中的public、 protected和 private成员

13、函数分别在public、protected和private继承方式下在派生类中的可访问性。(4分) 2. 若类A和类B没有继承关系,对于函数void func(A&) ,请至少用两种不同方法说明如何才能传递一个非常量的B类对象给func函数。(4分) 3. 在声明类中的构造函数、析构函数、纯虚函数、静态成员函数、非静态的成员函数以及全局函数作为类的友元函数时,哪些可以是常量成员函数?(3分) 4. 举例说明重载(overload) 、重定义(redefine) 和重写(override)的含义。(3分) 5. 通常类A的拷贝构造函数的原型写为A(const A&);,请问为什么参数一定要使用引用形式?使用const修饰符除了可以防止修改传递给构造函数的实参外,还有什么作用?(3分) 6. 程序员规范中要求不要写出类似(+i)+(i+) 或 f(+i,i+)这样的代码,请说明原因。(3分) 七、(共8分)阅读下面部分程序代码,完成3个问题。 #include class A public

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号