c++期中测验试卷1.doc_第1页
c++期中测验试卷1.doc_第2页
c++期中测验试卷1.doc_第3页
c++期中测验试卷1.doc_第4页
c++期中测验试卷1.doc_第5页
全文预览已结束

下载本文档

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

文档简介

期中测验试卷1一、选择题:(本大题共9题,每小题1分,共9分)1、系统为每个类提供一个this指针,在类的成员函数内,通过this指针可以间接访问这个类的 。A、在public段中声明的友元B、所有成员C、友元类的public成员D、所有派生类中的public成员2、关于动态分配的对象,下面的说法 是正确的?A、对于数组AN,如果是静态分配,N必须是常量;如果是动态分配,N可以是变量。B、动态分配的对象必须由同类型的指针指出,不管该指针是局部的还是全局的,动态分配对象的生命周期随指针的生命期结束而结束。C、静态和动态分配的对象在生命期结束时,都自动调用析构函数进行析构。D、如果在某个函数内动态分配了一个对象,那么这个对象只有在这个函数内才能被访问。3、在继承关系中,虚基类的作用是 。A、实现重载C、消除二义性D、使得派生类可以再也不必考虑二义性问题4、对于有继承关系的父类的构造函数,下面的 是正确的。A、构造函数可以通过虚基类的形式被继承。B、public的构造函数可以被继承。D、构造函数必须定义成非私有成员。5、对于指针,下面 是正确的。A、声明为void类型的指针可以指向任何类型的对象,并且通过该指针可以间接访问它所指向的对象。 B、如果两个指针的类型不是同一个类型,它们就不能相互赋值。(void类型的指针可以与其它类型的指针相互赋值) C、一个int 类型的指针既可以指向int类型的对象,又可以指向int类型的函数。 D、数组名就是指针。6、有关析构函数的错误的说法是 。A、一个类的析构函数有且只有一个。 B、析构函数无函数类型。C、析构函数和构造函数一样,可以有形参。D、析构函数的作用是在对象生命期结束时,收回分配给其的内存空间。7、对于操作符重载,下面 的说法是正确的。A、用户每定义一个类,系统会自动提供一个赋值运算符重载函数,所以完全不必考虑重载赋值运算符函数。B、运算符重载函数可能既不是成员函数,也不是友元函数。 C、运算符如果被重载为非成员函数,那么对象就不能利用这个运算符重载函数进行操作。8、关于类的友元函数的下述描述中, 是正确的。A、友元函数可以被继承。 B、一个类的友元函数可以访问这个类的所有成员。 C、一个类的友元函数必须在这个类中定义成内联函数。D、一个类的友元函数的返回类型必须是这个类的类型标识符。9、类B的数据成员中“有一个”A类的对象,这种类之间的关系是 。A、继承关系 B、间接关系 C、复合关系 D、直接关系二、写出下列程序的执行结果:(本大题共3题,共35分)1、#include / ( 10分 )templatevoid f(T*p) p-f(); coutf_Function.endl; class Apublic: virtual void f() coutAClass.endl; ; ;class B:public A int x; public: void f() coutB.endl; ;void main() A *pa=new B; f(pa); pa=new A; f(pa); 执行结果: 2、#include iostream.h / ( 15分 )#includeclass Date int day,month,year;public:Date(int d,int m,int y):day(d),month(m),year(y)void show() coutyear/month/=0 )cout in: rmb surplus:totalendl;elsecout out: (-rmb) surplus:totalnext=NULL; void in(int num,int d,int m,int y,double money) Deposit *p; p=new Deposit(d,m,y,total,money); pe-next=p; pe=p; pe-next=NULL;void out(int num,int d,int m,int y,double money) Deposit *p; p=new Deposit(d,m,y,total,-money); pe-next=p; pe=p; pe-next=NULL;void show() Deposit *p=ph; coutendl客户:name 的所有存取款记录:show(); p=p-next; double get_total() return total; ;int User:user_sum=2003;double User:total=0;void main() User u1(310001501230011,刘开封,上海市东川路800号,21,9,2002,500);u1.in(1201, 5,1,2003,7000);u1.out(1201,5,2,2003,7500);u1.show(); 执行结果: 3、#include / ( 10分 )class Complex public: Complex( double = 0.0, double = 0.0 ); / constructor Complex operator+( const Complex & ) const; / addition Complex operator-( const Complex & ) const; / subtraction const Complex &operator=( const Complex & ); / assignment void print() const; / outputprivate: double real; / real part double imaginary; / imaginary part;Complex:Complex( double r, double i ) : real( r ), imaginary( i ) Complex Complex:operator+( const Complex &operand2 ) const return Complex( real + operand2.real,imaginary + operand2.imaginary );Complex Complex:operator-( const Complex &operand2 ) const return Complex( real - operand2.real,imaginary - operand2.imaginary );const Complex& Complex:operator=( const Complex &right ) real = right.real; imaginary = right.imaginary; return *this; / enables cascadingvoid Complex:print() const cout ( real , imaginary ); void main() Complex x, y( 0.2, 8.2 ), z( 3.9, 1.1 ); cout x: ; x.print(); cout ny: ; y.print(); cout nz: ; z.print();

温馨提示

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

评论

0/150

提交评论