12-4类与对象练习题面向对象.doc_第1页
12-4类与对象练习题面向对象.doc_第2页
12-4类与对象练习题面向对象.doc_第3页
12-4类与对象练习题面向对象.doc_第4页
12-4类与对象练习题面向对象.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

类和对象一、选择题题 1 下列关于成员访问权限的描述中,不正确的是_。 A)公有数据成员和公有函数成员都可以被类对象直接处理B)类的私有数据成员只能被同类的公有成员函数以及该类的友元类或友元函数访问C)只有类或派生类的成员函数和友元类或友元函数可以访问保护成员D)保护成员在派生类中可以被派生类的函数成员访问,而私有成员不可以题 2 下列关于构造函数的描述中,错误的是_。A)构造函数可以设置默认参数B)构造函数在定义类变量时被自动执行C)构造函数可以对静态数据成员进行初始化D)构造函数可以重载题3 一个类的友元函数或友元类能够访问该类的_。(已出在第五章PPT)A)私有成员B)保护成员C)公有成员D)公有成员、保护成员和私有成员题 4 下面对于静态成员的描述中,正确的是_。A)静态数据成员是类的所有对象共享的数据B)类的每个对象都有自己的静态数据成员C)类的不同对象有不同的静态数据成员值D)静态数据成员不能通过类的对象调用题 5 对于下面的类Samp,在函数fun( )中将p所指向的对象的成员m的值改为70的语句应该是_。class Samp public:Samp (int x)n=x;void SetNum(int n1)n=nl;private:int n;int f( )Samp *ptr=new Samp (45);_A)Samp (70);B)SetNum(70);C)ptr-SetNum(70);D)ptr-n=70;题 6下面是类class_for_e6的定义,以下描述正确的是_。class Class_for_e6public:void Class_for_e6(int a)X=a;/1int f(int a,int b)/2X=a;Y=b;int f(int a,int b,int c=0)/3X=a;Y=b;Z=c;static void g()X=10;/4private:int X,Y,Z;A)语句1是类Class_for_e6的构造函数的正确定义B)语句2和语句3能实现类成员函数的重载C)语句4实现对类成员变量X的更新操作合法D)以上说法都不正确题 7_不是构造函数的特征A)构造函数的函数名与类名相同B)构造函数可以重载C)构造函数可以设置默认参数D)构造函数必须指定返回类型说明题8 有关析构函数的说法不正确的是_。A)析构函数有且只有一个B)析构函数无任何返回类型C)析构函数和构造函数一样可以有形参D)析构函数的作用是在对象被删除前进行一些需要的清理工作题 9_,是析构函数的特征。A)一个类中只能定义一个析构函数B)析构函数名与类名相同C)析构函数的定义只能在类声明体内D)析构函数可以有一个或多个参数题 10下列的各类函数中,_不是类的成员函数。A)构造函数B)析构函数C)友元函数D)拷贝构造函数题 11下列静态数据成员的特性中,_是错误的。A)说明静态数据成员时前边要加修饰符staticB)静态数据成员要在构造函数内进行初始化C)可以直接使用类名来访问静态数据成员,方法是在静态数据成员名前加和作用域限度符D)静态数据成员是所有对象所共用的题 13已知Sample中的一个成员函数说明如下:void set(Sample &a)其中形参Sample &a的含义是_。A)指向类Sample的名为a的指针B)将a的地址赋给变量setC)a是类Sample的对象引用,用来做函数set()的形参D)变量Sample与a按位与的结果作为函数set()的参数题 14 Sample是一个类,下列定义中_是定义指向对象数组的指针p A)Sample *p5B)Sample (*p)5C)(Sample*) p5D)Sample *p题 15在下面定义中,错误的语句是_。class Sample public:Sample(int val);/ASample( );/B private:int a=2;/Cflaot f;/D;试卷二一选择题1、下列有关类的说法,( )是不正确的。A、类是一种用户自定义的数据类型B、只有类中的成员函数才能存取类中的私有数据C、在类中如果不作特别声明,所有数据成员均为私有类型D、在类中如果不作特别声明,所有成员函数均为私有类型2、下列关于类与对象的说法中,( )是不正确的。A、对象是类的一个实例B、任何一个对象只能属于某个的类C、一个类只能有一个对象D、类与对象的关系和数据类型与变量的关系相似3、下列关于构造函数的描述中,错误的是( )。A、构造函数可以设置默认参数B、构造函数在定义类对象时自动执行C、构造函数可以是内联函数D、构造函数不可以重载4、下列有关析构函数的说法中,( )是错误的。A、一个类中析构函数有且只有一个B、析构函数无任何返回类型C、析构函数和构造函数一样可以有形参D、析构函数的作用是在对象被删除前进行一些清理工作。6、假定MyClass为一个类名,那么下列的函数说明中,( )为该类的析构函数的原型A、MyClass;B、 MyClass(int n);C 、MyClass();D、 MyClass( );7.若有一个MyClass类,则执行语句MyClass a, b(2), *p;后,自动调用该类的构造函数( )次。A) 2 B) 3C) 4D) 59.下面关于友元函数的描述中,()是正确的。A、友元函数的实现必须在类的内部定义B、友元函数是类的成员函数C、友元函数破坏了类的封装性和隐藏性D、友元函数不能访问类的私有成员10.在C+中,数据封装要解决的问题是( )A)数据的规范化B)便于数据转换C)避免数据丢失D)防止不同模块之间数据的非法访问11、一个类的友元函数或友元类可以访问该类的( )。A)私有成员B)保护成员C)公有成员D)所有成员 12、在类中定义和实现的函数可以称为( )。A)静态成员函数B)内联函数C)常成员函数D) 虚函数13、下列关于成员函数特征的描述中,( )是错误的。A)成员函数一定是内联函数B)成员函数可以重载C)成员函数可以设置参数的默认值D)成员函数可以是静态的14. C+中对于结构中定义的成员,其默认的访问权限为( )。A)public B)protectedC)private D) static15.为了使类中的成员不被类的对象通过成员操作符来访问,则不能把该成员的访问权限设置为( )。A) public B)protectedC) private D) static16.下面对静态数据成员的描述中,( )是正确的。A)静态数据成员可以在类体内进行初始化B)静态数据成员不可以被类的对象来访问C)静态数据成员不能设置为protectedD)静态数据成员可以直接用类名来访问17.对于下面定义的类MyClass,在函数f()中将对象成员n的值修改为50的语句应该是( )。class MyClasspublic: Myclass(int x)n=x; ) void SetValue(int n1)(n=nl;) private: int n; ;int f( ) MyClass *ptr=new MyClass(45); /对象的n的值为45_;A) MyClass(50) B)SetValue(50)C) ptr-SetValue(50) D) ptr-n=5018、类MyClass的定义如下:class MyClass public: MyClass( )value=0; setVariable(int i) value=i; private: int value;则以下各项对如下语句序列的描述中,( )是正确的。Myclass *p,my; p=&my;A)语句p=&my;是把对象my赋值给指针变量PB)语句MyClass *p,my;会调用两次类MyClass的构造函数C)语句 *p.SetVariable(5); 是合法的D)语句p-SetVariable(5)与语句my. SetVariable(5 )等价19类aClass的定义如下: class aClass public: aClass() aClass(int i) value=new int(i); int *value;则下面的赋值语句中( )是正确的。A)aClass my; my.value=10;B)aClass my; my.*value=0;C)aClass my; *(my.value)=10;D)aClass my(10);20.下面类的定义,有( )处错误class myclass int i=0;public: void MyClass( ); MyClass(int Value);A) 1B)2C) 3D) 421.若有以下程序:#include class point int x,y;public: point(int x1,int x2=0)x=x1;y=x2;void setpoint(int x1,int y1) x=x1; y=y1; void dispoint( ) coutx,ysetpoint(5,12); p-dispoint( );程序运行后的输出结果是( ) A) 12,12 B) 12,0C) 12,5 D) 5,1222. 若有以下程序: #include class sample int n;public: sample(int i) n=i; void add()s+=n; static int s; void dis( ) coutsendl; ;int sample:s=0;void main() sample a(2),b(5),c(a); a.add (); b. add (); c. dis ( );程序执行后的输出结果是:A) 2 B)5 C) 7 D) 9 23.有如下程序:#include class sample int x, y;public: sample(int i,int j)x=i;y=j; void disp()coutdisplendl; void disp() const coutdisp2endl; ; int main() const sample a(1,2); a.disp( ); return 0;该程序运行后的输出结果是( )。A) displB) disp2C) displ disp2 D)程序编译时出错 24.若有以下程序:#include class sample int i;public: void setvalue(int m)i=m; void fun(int m)i+=m; void disp()coutisetvalue(20); ps-fun(5); ps-disp();程序运行后,输出的结果是( )A) 15B)20C) 25 D) 30 25。有以下程序:#include #include class point double x; double y;public:point(double a,double b) x=a; y=b; friend double distance(point a,point b);double distance(point a,point b) return sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);void main() point p1(1,2); point p2(5,2); coutdistance(p1,p2)endl;程序运行后的输出结果是 ( )A) 1 B)5 C) 4 D) 6 26.若有以下程序:#include class sample int n;public:sample() sample(int m) n=m; void addvalue(int m) sample s; s.n=n+m; *this=s; void disp() cout n=nendl; ;void main() sample s(10); s.addvalue(5); s.disp();程序运行后的输出结果是()。A) n=10 B) n=5 C) n=15 D) n=20二、写出以下程序段的输出结果。1#includeclass Testpublic:Test(int a);Test();private:int x;Test:Test(int a)x=a;coutConstructor ofxendl;Test:Test()coutDustructor ofxendl;void fun()Test FunObject(1);static Test StaticObject(2);Test GlobalObject(3);int main()Test MainObject(4);fun();return 0;2 #include#includeclass personprivate:int no;char name20;public:void setvalue(const int no,const char name)this-no=no;strcpy(this-name,name);int getno() return no;char *getname( ) return name;void main()person *p;p=new person;p-setvalue(1,zhang);coutgetno():(*p).getname()endl;3 #include#includeclass Studentprivate:char number5;char name18;float score;static int counte;public:Student(char *num,char *name,float s)strcpy(number,num);strcpy(this-name,name);score=s;counte+;int get_counte( ) return counte;int Student:counte=0;void main()Student s1(2012,alan,67),s2(2030,afu,75);couts1.get_counte()endl;couts2.get_counte()endl;4 #includeclass Aprivate:int x;public:A(int a)x=a;friend class B;class Bpublic:void print1(A a)a.x-;coutx=a.xendl;void print2(A a)a.x+;coutx=a.xendl;void main()A a(10);B b;b.print1(a);b.print2(a);5#includeclass Xprivate:int a;int b;public:X()a=0;b=0;X(int a,int b)X:a=a; X:b=b;void disp()couta=a,b=b;class Yprivate:X x;int y;public:Y()y=0;Y(int a,int b,int c):x(a,b)y=c;void disp()x.disp();cout,y=yendl;void main()Y object1;Y object2(1,2,3);object1.disp();object2.disp();6#includeclass Sampleprivate:int x;int y;public:void get(int a,int b)x=a;y=b;void disp()coutx=x,y=yendl;void main()Sample object1,object2;object1.get(10,20);object1.disp();object2=object1;object2.disp();Sample object3(object2);object3.disp();7#includeclass Class_for_e12public:int a;int b;void show()couta=aendl;coutb=bendl;void main()int Class_for_e12:*p;Class_for_e12 obj;p=&Class_for_e12:a;obj.*p=100;p=&Class_for_e12:b;obj.*p=200;obj.show();8#includeclass ClassOnepublic:ClassOne();ClassOne(int value);ClassOne();void Print();private:int i;class ClassTwopublic:ClassTwo();ClassTwo(int value);ClassTwo();void Print();private:int i;ClassOne:ClassOne()coutConstructor of ClassOne!endl;i=0;ClassOne:ClassOne(int value)coutConstructor of ClassOne!endl;i=value;ClassOne:ClassOne()coutDesturctor of ClassOne!endl;void ClassOne:Print()coutThe i of ClassOne isiendl;ClassTwo:ClassTwo()coutConstructor of ClassTwo!endl;i=0;ClassTwo:ClassTwo(int value)coutConstructor of ClassTwo!endl;i=value;ClassTwo:ClassTwo()coutDesturctor of ClassTwo!endl;void ClassTwo:Print()coutThe i of ClassTwo isiendl;int main()ClassTwo classobj(10);classobj.Print();return 0;9 #includeclass Myclasspublic:Myclass();Myclass();void setValue(int val);private:int i;Myclass:Myclass()i=0;coutThis is a constructor! i=iendl;Myclass:Myclass()coutThis is a destructor! i=iendl;void Myclass:setValue(int val)i=val;couti=ien

温馨提示

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

评论

0/150

提交评论