面向对象技术与C+(3)答案_第1页
面向对象技术与C+(3)答案_第2页
面向对象技术与C+(3)答案_第3页
面向对象技术与C+(3)答案_第4页
面向对象技术与C+(3)答案_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象技术与C+试卷答案第一题 填充题 (10 分,每 1 个空格 1 分)1. 当使用带参数的流操纵算子时,程序中必须包含( iomanip ) 头文件。2. 复合对象中的成员对象是在建立复合对象之( 前) 建立的。3. 运算符new分配的动态内存要用运算符 (delete )回收。如果在一个类的构造函数中使 用new分配动态内存,则回收操作应在类的 (析构)函数中完成。4. struct 成员的默认访问模式是 ( public ),而 class 成员的默认访问模式是 ( private )。5. 关键字 (const ) 指定了不可修改的对象或变量。关键字 (const ) 指定一个类

2、的成员不会 修改类中的数据成员。6. 重载赋值运算符 operator= 时,应将其声明为类的( 成员 )函数。7. C+中的输入/输出是以字节(流)的形式实现的。第二题 指出下列程序段中的错误,说明错误原因 (10 分,每 1小题 5分)1class Rational /表示有理数的类声明public :void Rational (int,int);/第 1 个参数为分子,第 2 个参数为分母/ 其他成员函数的原型说明private:void Rational ( );/默认的数为 0,其分子表示为 0,分母表示为 1int a = 0 , b = 1;1) void Rational()

3、; 构造函数的访问属性应为 public2) 两个构造函数都不能指定返回类型3) int a = 0 , b = 1; 不能直接赋初值4 )最后少了一个分号 (;) 2 class myClass public: v = a ; si = b ; v = v + i ; return v + si; myClass(char a, int b) void f1(int i = 10) const static int f2()private:char v; static int si; ;1) static 函数 f2() 不能访问非 static 成员 v2) 构造函数中不能对 static

4、 数据赋值3) const 成员函数 f1 不能修改数据成员 v4) static 数据 si 需要在类声明的外面进行初始化第三题 选择题 (10 分,每 1 个空格 1 分)1在 VC+ 中,目标文件的扩展名为( B)A.cPPB.objC.hD.exe2通常情况下,模板函数的类型参数个数不能为(A )个。A 0B 1C 2D 2 个以上3既要禁止修改指针P ,又要禁止修改P所指的数据,则P的正确定义是(D)。A const char* p=” xxxx ”;B char* const P=” xxxx ”;C char const *P=” xxxx ”;D const char * co

5、nst P=” xxxxD 中是( A)。4若函数f是类C中的虚函数,类 D是类C的公有派生类,则函数 f在类A 总是虚函数B 只有重新声明时才是虚函数C 只有使用 virtual 关键字重新声明时才是虚函数D 不可能是虚函数5. 每个类(A)析构函数。A 只能有一个B 只可有私有的C 可以有多个D 只可有缺省的6. 重载函数调用运算符 OPerator时,应将其声明为类的(C)函数。A非成员B虚C成员D多态7. static 成员函数没有( B)。A返回值Bthis 指针C指针参数D返回类型8. 设T是类名,则声明 T a();表示a是(A)。A 函数名B 对象名C 函数指针D 引用8. 设

6、函数 f 是类 A 的虚函数,类 B 是类 A 的 public 派生类。 定义B d; A* P=&d; A& r=d;则采用动态联编的是(B)和(E)。A d.f();B P-f();C P.f();D r-f();E r.f();第四题 简答题(10 分)为什么编译器认为把基类指针转换为派生类指针是危险的?派生类指针指向基类对象。 这种方法是不安全的, 因而需要避免。 因为通过派生类指针 使用派生类自己添加的成员是可以的,但它所指的基类对象中并不存在这种成员。第五题 写出以下程序运行时的输出结果 (10 分)#include using namesPace std;class A Pub

7、lic: A() cout initialize An; virtual void write() cout class A n; ;class B: Public A Public:B() cout initialize Bn; void write() cout class B n; ;class C: Public B Public:C() cout initialize Cn; void write() cout class Cn; ;class D: Public C Public:D() cout initialize Dn; ;int main( ) A a; B b; C c;

8、 D d;A* p = &a,&b,&c,&d; A arr = a,b,c,d;for (int i=0;iwrite(); arri. write(); return 0;initialize A initialize A initialize B initialize A initialize B initialize C initialize A initialize B initialize C initialize D class A class A class B class A class C class A class C class A第六题 写出以下程序运行时的输出结果

9、(10 分)#include using namespace std;class A public:A( ) cout AAA ; class B : public A public:B ( ) cout BBB ; private: A m1,m2;class C : public Apublic:C( ) cout CCC ; private: B m1,m2;A( ) cout AAA ; ;B( ) cout BBB ; C( ) cout CCC ; A obj; B obj2; C obj3;int main( )cout endl; delete p; C objc; B* p=

10、new B; static A sa;return 0;AAAAAAAAA AAABBBAAAAAAAAA AAA BBB AAAAAAAAABBBCCCAAAAAAAAAAAA BBBAAAAAAAAABBB CCC AAAAAAAAABBBBBBAAA AAAAAAAAACCCBBB AAAAAAAAABBBAAAAAAAAA AAA AAA CCCBBBAAAAAA AAA BBBAAAAAAAAAAAA BBBAAA AAA AAA AAA第七题 编程题 (10 分)编写一个名称为 sum 的函数模板计算其三个同类型参数值的和。template T sum(T a, T b, T c)

11、 return a+b+c; 第八题 编程题 ( 30 分) 建立一个能安全使用的动态数组类 DynamicArray 。 所谓安全使用指数组下标越界时自动终止程序执行; 所谓动态指数组的大小可在程序运 行过程中确定,而不必要在编写程序时就确定下来。给类提供能完成下列功能的函数: 构造函数和拷贝构造函数; 数组整体赋值和输出; 下 标运算符。/dynamicarray.h#ifndef DYNAMICARRAY_H#define DYNAMICARRAY_H#include using namespace std;class DynamicArray friend ostream& opera

12、tor(ostream&, const DynamicArray&);public: DynamicArray( int arraySize = 10 ); DynamicArray( const DynamicArray& ); DynamicArray();const DynamicArray& operator= ( const DynamicArray& ); int& operator ( int );private:int* ptr;int size;#endif/dynamicarray.cpp#include #include using namespace std;#incl

13、ude dynamicarray.hDynamicArray:DynamicArray(int arraySize) size = arraySize;ptr = new intsize; assert( ptr != 0 );for (int i = 0 ; i size ; i+ ) ptri = 0;DynamicArray:DynamicArray( const DynamicArray& init ) size = init.size;ptr = new intsize;assert( ptr != 0 );for (int i = 0 ; i size ; i+ ) ptri = init.ptri;DynamicArray:DynamicArray() delete ptr; int& DynamicArray:operator( int subscript) assert ( 0 = subscript & subscript size );return ptr subscript ;const DynamicArray& DynamicArray:operator= ( const DynamicArray& right ) if ( this != &right ) delete ptr; size = right.size; ptr =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论