选择题类与对象_第1页
选择题类与对象_第2页
选择题类与对象_第3页
选择题类与对象_第4页
选择题类与对象_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、一1:下列有关类的说法不正确的是( )。A 对象是类的一个实例B 任何一个对象只能属于一个具体的类C 一个类只能有一个对象D 类与对象的关系和数据类型与变量的关系相似答案:C分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。2:下面( )项是对构造函数和析构函数的正确定义。Avoid X:X(), void X:X()BX:X(参数), X:X()CX:X(参数), X:X(参数)Dvoid X:X(参数), void X:X(参数)答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。3:( )的功能是对象进行初始

2、化。 A析构函数 B. 数据成员 C.构造函数 D.静态成员函数答案:C分析:当一个对象定义时,C+编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C+编译系统自动调用析构函数注销该对象并进行善后工作;4:下列表达方式正确的是( )。Aclass P B class Ppublic: public:int x=15; int x; void show()coutx; void show()coutx; ; C class P D. class P int f; public: ; int a; f=25; void Seta (int x) a=x;答案:D分析:在

3、类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。5: 拷贝构造函数具有的下列特点中,( )是错误的。A 如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的B 拷贝构造函数只有一个参数,并且是该类对象的引用C 拷贝构造函数是一种成员函数D 拷贝构造函数的名字不能用类名答案:D分析:如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。6:关于静态成员的描述中,( )是错误的。A 静态成员可分为静态数据成员和

4、静态成员函数B 静态数据成员定义后必须在类体内进行初始化C 静态数据成员初始化不使用其构造函数D 静态数据成员函数中不能直接引用非静态成员答案:B分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。7:关于友元的描述中,( )是错误的。A 友元函数是成员函数,它被说明在类体内B 友元函数可直接访问类中的私有成员C 友元函数破坏封装性,使用时尽量

5、少用D 友元类中的所有成员函数都是友元函数答案:A分析:友元函数是非成员函数,在类体内说明了,在类体外定义,定义和调用等同于一般的普通函数;由于它可以直接访问类的私有成员,因此破坏了类的封装性和隐藏性,尽量少用。8对类的构造函数和析构函数描述正确的是()。A. 构造函数可以重载,析构函数不能重载B. 构造函数不能重载,析构函数可以重载C. 构造函数可以重载,析构函数也可以重载D. 构造函数不能重载,析构函数也不能重载答案:A9类的析构函数的作用是( D )。A.一般成员函数 B.类的初始化 C.对象初始化 D.删除对象答案:D10假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语

6、句为( )。A.OneClass(OneClass p); B. OneClass& (OneClass p);C. OneClass(OneClass & p); D. OneClass (OneClass *p);答案:C11下面对于友元函数描述正确的是( )。A.友元函数的实现必须在类的内部定义B.友元函数是类的成员C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员答案:C12对于结构中定义的成员,其默认的访问权限为( )。A.public B. protected C.private D. static答案:C13为了使类中的某个成员不能被类的对象通过成员操作符访问,

7、则不能把该成员的访问权限定义为( )。 A.public B. protected C.private D. static答案:A14下面对静态数据成员的描述中,正确的是( )。A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以在类体内进行初始化C.静态数据成员不能受private控制符的作用D.静态数据成员可以直接用类名调用答案:C15下面对静态数据成员的描述中,正确的是( )。A.静态数据成员是类的所有对象共享的数据B.类的每一个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用答案:A16下面对于析构函数的描述中不正确的是()。

8、 A、析构函数是内置函数B、析构函数与类名相同 C、析构函数不能有参数D、析构函数在对象撤销时自动执行 答案:B二1. 下列的各类函数中, 不是类的成员函数。 ( C )A) 构造函数 B) 析构函数 C) 友元函数 D) 拷贝初始化构造函数注:可做友元的函数有普通函数和其它类的函数,所以不是本类内的成员函数。2. 作用域运算符“:”的功能是 。 ( D )A) 标识作用域的级别的 B) 指出作用域的范围的C) 给定作用域的大小的 D) 标识成员是属于哪个类的注: “:”左边一般为类名,右边一般为成员变量和成员函数,它的功能就是标识是属于哪个类的;如果左边什么都不加,表示全局变量。3. 下列选

9、项中, 是不正确的。 ( B )A) 名空间是为了支持大规模程序的逻辑设计、排解名字冲突应运而生的B) 名空间定义的关键词为typename C) 名空间定义的关键词为namespaceD) 因为程序是跨文件的,所以名空间也是跨文件的4. 是析构函数的特征。 ( A )A) 一个类中只能定义一个析构函数 B) 析构函数名与类名不同C) 析构函数的定义只能在类体内 D) 析构函数可以有一个或多个参数5. 下述静态数据成员的特性中, 是错误的。 ( D )A) 说明静态数据成员时前边要加修饰符staticB) 静态数据成员要在类体外进行初始化C) 引用静态数据成员时,要在静态数据成员前加和作用域运

10、算符D) 静态数据成员不是所有对象所共用的注:静态成员都是隶属于类的,是所有同类对象共享的6. 已知fl(int)是类A的公有成员函数,P是指向成员函数f1()的指针,采用 是正确的。( B )A) p=fl; B) P=A:f1; C) P=A:fl(); D) P=f1();注:指向普通函数的指针 int max(int a, int b) int (*p)(int, int); p=max;指向类中公有函数的指针的赋值与上相同 指针名=类名:函数名,即 p=A:max;7. 友元关系不能 ( C )A) 是类是与类的关系 B) 是一个类成员函数与另一个类的关系C) 继承 D) 提高程序的

11、运行效率注:友元关系可是一个类与另一个类的关系,也可以是一个类成员函数与另一个类的关系;利用友元的主要目的是提高程序的运行效率,通过友元访问类的私有数据(如同生活中通过人际关系得到内部消息或受益等)。 友元关系是不继承的。例:刘鹏是黄涛的朋友,可以分享黄涛的小秘密,但刘鹏不一定是黄小涛(假如黄小涛是黄涛的儿子)的朋友,不一定能分享黄涛儿子的小秘密。8. 下列关于对象数组的描述中, 是错的。 ( D )A) 对象数组的下标是从0开始的 B) 对象数组的数组名是一个常量指针C) 对象数组的每个元素是同一个类的对象D) 对象数组只能赋初值,而不能被赋值9. 下列说明中 const char *ptr

12、; ptr应该是 ( C )A) 指向字符常量的指针 B) 指向字符的常量指针C) 指向字符串常量的指针 D) 指向字符串的常量指针注:使用const修饰指针时,由于const的位置不同,而含意不同。下面定义的一个指向字符串的常量指针:char * const prt1 = stringprt1; /注意const位置/ prt1只能指向stringprt1字符串,指针是常量,而字符串stringprt1的字符串可以修改其中,ptr1是一个常量指针。因此,下面赋值是非法的。ptr1 = stringprt2;而下面的赋值是合法的:*ptr1 = m;因为指针ptr1所指向的变量是可以更新的,不

13、可更新的是常量指针ptr1所指的方向(别的字符串)。下面定义了一个指向字符串常量的指针:const char* ptr2 = stringprt1; /const写在前面,字符串是常量,指针不是常量其中,ptr2是一个指向字符串常量的指针。ptr2所指向的字符串不能更新的,而ptr2是可以更新的。因此,*ptr2 = x;是非法的,而: ptr2 = stringptr2; 是合法的。10. 已知:print()函数是一个类的常成员函数,它无返回值,下列表示中, 是正确的。 ( A )A) void print()const; B) const void print();C) void con

14、st print(): D) void print(const);11. 关于new运算符的下列描述中, 是错的。 ( D )A) 它可以用来动态创建对象和对象数组B) 使用它创建的对象或对象数组可以使用运算符delete删除C) 使用它创建对象时要调用构造函数D) 使用它创建对象数组时必须指定初始值注:用new创建对象数组时会自动调用无参的构造函数(或者有缺省值的构造函数) 例: Point *p = new Point10; 会调用10次无参的构造函数12. 具有转换函数功能的构造函数,应该是 。 ( B )A) 不带参数的构造函数 B)带有一个参数的构造函数C) 带有两个以上参数的构造函数 D) 缺省构造函数注:构造函数可以将普通类型转换为对象#include#includeusing namespace std;class Examplepublic: Example(int va=0); void print();private: int

温馨提示

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

评论

0/150

提交评论