C期末考试试题_第1页
C期末考试试题_第2页
C期末考试试题_第3页
C期末考试试题_第4页
全文预览已结束

下载本文档

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

文档简介

1、一、 单项选择题(12题,每题5分)1. 已定义了一个类A并有语句 A* pa=new A(5); 那么以下说法正确的是:DA. 该语句会创建A类的一个对象,并将此对象的地址赋给指针pa;B. 该语句会创建A类的5个对象,且它们的地址是连续的;C. 当指针变量pa超出其作用域时,pa和为对象分配的空间都将被自动释放;D. 类A中一定有一个显式定义的构造函数和一个显式定义的虚析构函数;2. 定义类A的非静态成员函数A& f(A& one)时,需有语句return exp;则exp不能是:DA.类A中类型为A的静态数据成员 B. f中用语句 A a = one; 定义的量aC. o

2、ne D. *this3. 在一个类中,下列哪些成员可以是多个?DA. 无参构造函数 B. 析构函数C. 原型相同的非静态成员函数 D. 静态成员函数4. 对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是:DA. 公有或私有 B. 私有 C. 保护或私有 D. 公有或保护5. 在下列关键字中,不能用来表示继承方式的是:BA. private B. static C. public D. protected6. 下列有关运算符重载的叙述中,正确的是:AA. 运算符重载是多态的一种表现B. C+中可以通过运算符重载创造新的运算符C. C+中所有运算符

3、都可以作为非成员函数重载D. 重载运算符时可以改变其结合性A7. 下列关于类定义的说法中,正确的是:A. 类定义中包括数据成员与函数成员的声明B. 类成员的缺省访问权限是保护的C. 数据成员必须被声明为私有的D. 成员函数只能在类体外进行定义8. 建立一个有成员对象的派生类对象时,各构造函数体的执行顺序为:CA. 派生类 成员对象类 基类 B. 成员对象类 基类 派生类C. 基类 成员对象类 派生类 D. 基类 派生类 成员对象类9. C+中解决命名冲突的机制是:AA. 虚基类 B. 虚函数 C. 函数重载 D. 名字空间10. 任意一个类,析构函数的个数最多是:BA. 不限个数 B. 1 C

4、. 2 D. 311. 在类定义中,为说明成员的访问权限,private, protected, public 可以出现次数为:AA. 次数没有具体限定 B. 每种至多一次C. public 至少一次 D. 每种至少一次12. 下面关于访问类A的私有数据成员的说法,错误的是:CA.类A的友元函数可以访问类A的私有成员。 B.类A的友元类中的非静态成员函数可以访问类A的私有成员。C.类A的嵌套类中的非静态成员函数可以访问类A的私有成员。D.类A中的非静态成员函数可以访问类A的私有成员。 二、 写出下面程序的运行结果(2题,每题10分)1. #include <iostream.h>c

5、lass A public: A( ) cout<<"<1> A:A( ) "<<endl;virtual A( ) cout<<"<2> A:A( )"<<endl;virtual void g( ) cout<<"<3> A:g( )"<<endl;void h( ) cout<<"<4> A:h( )"<<endl;virtual void f( ) g( ); h(

6、 ); ;class B:public Apublic: B( ) cout<<"<5> B:B( ) "<<endl; virtual B( ) cout<<"<6> B:B( )"<<endl;virtual void g( ) cout<<"<7> B:g( )"<<endl; void h( ) cout<<"<8> B:h( )"<<endl; virtual v

7、oid k( ) f( ); g( ); h( ); ;void main( ) B b;b.k( );2. #include <iostream.h>class A public:A( ) cout<<1<<endl; virtual A( ) cout<<2<<endl;virtual int Add(int n) return 0; ;class B : public A public:B(int n):num(n) virtual B( ) virtual int Add(int n) num+=n; return num;p

8、rivate:int num;class C : public Apublic:C(A& obj,int n) : a(obj), num(n) cout<<3<<endl; virtual C( ) cout<<4<<endl; virtual int Add(int n) return a.Add(n+num); private:A& a;int num;Int main ( ) B b(100);C c1(b,1), c2(c1,2);cout<<c2.Add(50)<<endl;return0;三、

9、 编程题(20分)已知某程序中类MyString是自定义的一个用来描述字符串的类,它在main函数中使用情况如下:void main( ) MyString s1("Hello ");MyString s2("World!"); cout << s1.getString() << s2.getString( ) << endl; MyString s3(s1); cout << s3.getString( ) << endl; s3 = s1 + s2; cout << s3.get

10、String( ) << endl; 程序执行时,输出结果如下:Hello World!HelloHello World!根据以下已知条件,完成对MyString类的定义和实现。(1) 可以使用iostream.h中定义的类及相关内容。(2) 可以使用string.h中定义的如下函数:int strlen(const char* ); 用于计算标准表示的字符串长度;char* strcpy( char *strDestination, const char *strSource );用于将strSource串拷贝给strDestination。返回的是strDestination串,一般不用。char* strcat( char

温馨提示

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

评论

0/150

提交评论