(完整版)C面向对象程序设计试题集_第1页
(完整版)C面向对象程序设计试题集_第2页
(完整版)C面向对象程序设计试题集_第3页
(完整版)C面向对象程序设计试题集_第4页
(完整版)C面向对象程序设计试题集_第5页
已阅读5页,还剩67页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、C+面向对象程序设计试题集一、填空题(每空2分,共20分)1.2.3. 设a、b、c都是int型变量,则a=(b=4)+(c=2)后,a值为_ b值为。在派生类 的成员中有公有成员、四类成员。 类Sample的构造函数将形参data赋值给数据 成员data请将类定义补充完整。class Samplepublic: Sample(i nt data=0);Private: int data;Sample:Sample(i nt data)4. 面向对象程序设计的5. 继承发生在利用现有类派生新类时,其中现有类称为,或父类;派生的新类称为,或。6.6. 若表达式(x+(y-z)*(m/n)+3中的

2、变量均为double型,则表达式值的类型为。已 知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为i-1的单元,其中1WVn。例如,当n=4,a中原有数据为1, 2,3, 4时,则移 动后a中元素为2,3,4,4。请将语句补充完整:for(i nt i=0;i <n _1;i+) ai= 。7. 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的,共同行为被描述为类中的。8. 类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。class Samplepublic:Sample(i nt data=0);Private:

3、int data; ;Sample:Sample(i nt data)9. 实现运行时多态,要使用 函数。10. 设A为test类的对象且赋有初值,则语句test B(A);。11. 在MyClass类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补 充完整。MyClass:operator=(c on st MyClass rhs)if(this=&rhs) return *this;value=rhs. value;return *this; 12. C+语言中的每条基本语句以 作为结束符,每条复合语句以作为结束符。13. 若p指针指向字符串“ABCDEFGHIJKL,则语

4、句cout«*(p+5);的输出结果是。14. 当一个函数或一个类希望能够直接访问另一个类中的非公用成员时,应该将 该函数声名为另一个类的或。15. 设px是指向一个类动态对象的指针变量,则执行“delete p>语句时,将自动调用该类的函数。16. C+中没有字符串类型,字符串是通过 表示的,每一个字符串都有一个结尾字符。17. 使用const语句定义一个标识符常量时,则必须对它同时进行 。18. 类test的析构函数名是。19. 建立对象时,为节省内存,系统只给 配内存。20. 类中的数据和成员函数默认访问类型为。21. 当建立一个新对象时,程序自动调用 。22. 在C+中

5、,函数的参数有两种传递方式,它们是值传递和 。23. 若表达式(x+(y-z)*(m/n)+3中的变量均为double。24. 循环语句:for(int i=50; i>20; i- =2) cout<<i<<?,?;运行时循环体的执行次数是25. 任何类中允许有三种访问权限的数据,这三种访问权限分别是public26. 类是用户定义的类型,具有类类型的变量称为。当建立一个新对象时,程序 自动调用。27. 利用成员函数对二元运算符重载,其左操作数为,右操作数为28. C+将类继承分为和两种。29. 派生类可以定义其不具备的数据和操作。30. 有如下类定义:clas

6、s Samplepublic: Sample(); Sample();private: static int date;将静态数据成员data初始化为0的语句是。31. 在保护继承方式下,基类的公有和保护成员成为派生类中的32. 若表达式(x+(y-z)*(m/n)+3中的变量均为double型,则表达式值的类型为。33. 类test的析构函数名是34. 在保护继承关系下,基类的公有成员和保护成员将成为派生类中的成员。35. 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中 的,共同行为被描述为类中的。36. 在派生类的成员中有私有成员37. 在继承机制下,当对象消亡时,编译

7、系统先执行的析构函数,然后才执行派生类中子对象类的析构函数,最后执行的析构函数。38. 在C语言中,编程的单位是 在C+语言中,编程的单位是。39. 若表达式(x+(y-z)*(m/n)+3中的变量均为double型,则表达式值的类型为。40. 面向对象程序设计的 机制提供了重复利用程序资源的一种途径。41. 非成员函数应声明为类的 才能访问这个类的private成员。42. 派生新类的过程一般包括、三个步骤。43. C+程序的头文件和源程序文件扩展名分别为和。44. 循环语句:for(int i=50; i>20; i- =2) cout<<i<<?,?;运行时

8、循环体的执行次数是45. 类中构造函数有个,析构函数有个。46. 有如下类定义:class Samplepublic:Sample();Sample();private:static int date;将静态数据成员data初始化为0的语句是。47. 假定p所指对象的值为25, p+1所指对象的值为46,贝U执行“(*p)+ ”语句 后,p所指对象的值为。48. 若在类的定义体中只给出了一个成员函数的原型,贝恠类外给出完整定义时,其函数名前必须加上类名和两个隔符。49. 若需要把一个函数“void FQ ”定义为一个类AB的友元函数,则应在类 AB 的定义中加入一条语句:。50. 若要把类外定

9、义的成员函数规定为内联函数,贝U必须把 键字放到函数原型或函数头的前面。51. 为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上 键字。52. 程序段i=5; j=0; j=+i+j ;输出结果为53. 类定义中,既包含数据成员,也包含 员。54. 假定AB为一个类,则执行“AB a10;语句时,系统自动调用该类的构造函数 的次数为,其构造函数名是。55. 假定一个类对象数组为AN,当离开它的作用域时,系统自动调用该类析构函数的次数为。56. 已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下 标为i-1的单元,其中1WV n。例如

10、,当n=4,a中原有数据为1, 2,3, 4时, 则移动后a中元素为2,3,4,4请将语句补充完整:for(i nt i=0;i <n _1;i+) ai= 。57. 是指对已有的运算符赋予多重含义。58. 带有的类称为抽象类,抽象类的特征是不能声明一个抽象类的,但可以声明一个抽象类的指针或引用。59. 若表达式(x+(y-z)*(m/n)+3中的变量均为double型,则表达式值的类型为。60. 设A为test类的对象且赋有初值,则语句test B(A);表示。61. 利用 对象名.成员变量”形式访问的对象成员仅限于被声明为的成员;若要访问其他成员变量,需要通过函数或函数。62. 是指

11、同样的消息被不同类型的对象接收时导致不同的行为。63. 在继承机制下,当对象消亡时,编译系统先执行的析构函数,然后才执行派生类中子对象类的析构函数,最后执行的析构函数。64. 类中构造函数有个,析构函数有个。65. 循环语句:for(int i=50; i>20; i- =2) cout<<i<< ',';运行时循环体的执行次数是66. 类是用户定义的类型,具有类类型的变量称为。当建立一个新对象时,程序自动调用。67. 有如下类定义:class Samplepublic: Sample(); Sample();private: static int

12、 date;将静态数据成员data初始化为0的语句是。68. 继承发生在利用现有类派生新类时,其中现有类称为,或父类;新类称为,或子类。69. 利用 对象名.成员变量”形式访问的对象成员仅限于被声明为的成员;若要访问其他成员变量,需要通过函数或函数。70. 是指同样的消息被不同类型的对象接收时导致不同的行为。二、单项选择题(每小题2分,共20分)类中定义的成员默认为()访问属性。A. public B. private C. protected D. friend如果一个函数无返回值,定义时它的函数类型应是()。A .任意 B. int C . void D .无下面的函数声明中,()是“vo

13、id BC(int a,int b);的重载函数。A .int BC(i nt x,i nt y); B . void BC(i nt a,char b);C. float BC(i nt a,i nt b,i nt c=0); D .int BC(i nt a,i nt b=0);与C语言printf(“Hello wen”);语句功能相同的 C+语句是()。A. cout>> ” Hello word” B.cin>> ” Hello wordC. coutvv ” Hello word D.cin<< ” Hello word假定要对类AB定义加号操作

14、符重载成员函数,实现两个AB类对象的加法,并返回相加结果,贝U该成员函数的声明语句为()。A. AB operat o叶(AB & a , AB & b) B. AB operato 叶(AB & a)C. operat o叶(AB a) D. AB & operat o叶()以下不正确的语句是()。A . if (x>y);B. if (x=y) && (x!=0) x+=y;C. if (x!=y) cin»x ; else cin»y;D. if(x<y) x+ ; y+; int x=-1;dox=x*x;

15、while(!x);下列说法正确的是()。A .是死循环B.循环执行两次C.循环执行一次D .有语法错误 下面函数()的表示方法说明它使用对象的引用作为参数。A. test(pt *p) B.test(pt p) C.test(pt &p) D.test(const P)下面叙述不正确的是()。A .基类的保护成员在派生类中仍然是保护的B .基类的保护成员在公有派生类中仍然是保护的C.基类的保护成员在私有派生类中是私有的D .对基类成员的访问必须是无两义性 下列运算符中,()运算符在C+中不能重载。A. ? : B. + C. - D. < =在C+中,打开一个文件就是将这个文件

16、与一个()建立关联;关闭一个文件就 是取消这种关联。A. 流B.类C.结构D.对象对while、dowhile循环结构,下面说法正确的是()。A 只是表达形式不同B. dowhile结构中的语句至少执行一次C. while结构中的语句至少执行一次D .条件成立时,它们有可能一次也不执行 关于函数的调用下面不正确的是()。A .由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间 进行B .函数的调用可以在任意函数之间进行,只要有需要C. 一个函数可以自己调用自己D. 函数返回时可以不必带返回值,这时函数在定义时其类型应用void表示关 于函数的声明和定义正确的是()。A .函数的

17、声明是必须的,只有这样才能保证编译系统对调用表达式和函数之间 的参数进行检测,以确保参数的传递正确B .函数的定义和声明可以合二为一,可以只有函数定义即可C .函数在声明时,其参数标识符可省略,但参数的类型、个数与顺序不能省略 D .函数的存储类型为外部型,所以可以在其他函数中被调用,它在定义时象其 他外部变量一样,可以在其他函数内定义 用于类中虚成员函数说明的关键字是()。A. public B.virtual C. protected D. private有如下程序段:int i=5;while (int i=0) cout<<"*" i-;运行时输出“*的

18、个数是()A. 0 B.1 C. 5 D.无穷运算符重载时不需要保持的性质是()A.操作数个数B.操作数类型C.优先级D.结合性 有如下类定义和变量定义:class A public:A() data=0; A() int GetData() const return data; void SetData(int n) data=n; private: int data;const A a;A b;下列函数调用中错误的是()A. a.GetData(); BaSetData(IO); C.b.GetData(); D. b.SetData(IO)对类的构造函数和 析构函数描述正确的是()A.

19、构造函数可以重载,析构函数不能重载;B. 构造函数不能重载,析构函数可以重载;C. 构造函数可以重载,析构函数也可以重载;D. 构造函数不能重载,析构函数也不能重载;下列有关类的说法不正确的是()。A .对象是类的一个实例B .任何一个对象只能属于一个具体的类C. 一个类只能有一个对象D .类与对象的关系和数据类型与变量的关系相似()的功能是对象进行初始化。A .析构函数B.数据成员C.构造函数D.静态成员函数 关于友兀的描述中,()是错误的。A .友元函数是成员函数,它被说明在类体内B .友元函数可直接访问类中的私有成员C.友元函数破坏封装性,使用时尽量少用D .友元类中的所有成员函数都是友

20、元函数为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的 访问权限定义为()。A.public B. protected C.private D. static下面对静态数据成员的描述中,正确的是()。A. 静态数据成员是类的所有对象共享的数据B. 类的每一个对象都有自己的静态数据成员C. 类的不同对象有不同的静态数据成员值D. 静态数据成员不能通过类的对象调用下列表达方式正确的是()。A . class P B . class Ppublic: public:int x=15 ; int x ;void show()cout<<x ; void show()c

21、out<<x ; ; C. class P D. class Pint f; public : ; int a;f=25; void Seta (int x) a=x;以下叙述中不正确的是():A. 个类的所有对象都有各自的数据成员,它们共享函数成员;B. 在一个类中可以声明另一个类的对象作为它的数据成员;C. 类与对象的关系和数据类型与变量的关系相似;D. 一个对象可以属于多个类。对于一个功能不太复杂,并且要求加快执行速度,选用()合适A 内置函数B 重载函数C递归调用D 嵌套调用Sample是一个类,执行下面语句后,调用 Sample类的构造函数的次数是()Sample a2,

22、 *p = new Sample;A.0 B. 1 C. 2 D.3已知函数FA调用FB,若要把这两个函数定义在同一个文件中,贝U()A. FA必须定义在FB之前B. FB必须定义在FA之前C. 若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D. 若FB定义在FA之后,则FB的原型必须出现在FA的定义之前 下列有关运算符函数的描述中,错误的是()A. 运算符函数的名称总是以operator为前缀B. 运算符函数的参数可以是对象C. 运算符函数只能定义为类的成员函数D. 在表达式中使用重载的运算符相当于调用运算符重载函数 下面描述中,正确的是()。A. virtual可以用来声明虚函

23、数B .含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类 C.既使基类的构造函数没有参数,派生类也必须建立构造函数D .静态数据成员可以通过成员初始化列表来初始化 下列对基类和派生类关系的描述中,错误的是()。A.派生类是基类的具体化B.派生类是基类的子集C.派生类是基类定义的延续 D.基类是派生类的抽象C+语言对C语言做了很多改进,C+语言相对于C语言的最根本的变化是 ()°A .增加了一些新的运算符B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念 下列表示引用的方法中,()是正确的。已知:int k=1000;A. int &am

24、p;x=k ; B. char &y ; C. int &z=1000 ; D. float &t=&k ;下面对于友元 函数描述正确的是()。A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D .友元函数不能访问类的私有成员 假定AB为一个类,则执行“AB a,b3 , * p2; ”语句时,自动调用该类构造函数 的次数为()。A.3 B.4 C.6 D.9以下不属于构造函数特征的是()A.构造函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定函数类型 下列定义中,X是一个类,

25、()是定义指向对象数组的指针 p。A . X *p4 B . X (*p)4 C . ( X*) p4 D . X *p假定X为一个类,则该类的复制构造函数的声明语句为()。A. My Class(My Class x) B. My Class&(My Class x)C . My Class(My Class &x) D . My Class(My Class *x) 以下正确的说法是()。A. 实参和其对应的形参各占用独立的存储单元。B. 实参和其对应的形参共占用一个存储单元。C. 只有当实参和与其对应的形参同名时才共占用存储单元。D. 形参是虚拟的,不占用存储单元。下列关

26、于多态性的描述,错误的是()。A . C+语言的多态性分为编译时的多态性和运行时的多态性B .编译时的多态性可通过函数重载实现C .运行时的多态性可通过模板实现D .实现运行时多态性的机制称为动态绑定对C+编译器区分重载函数无任何意义的信息是()A.参数类型B.参数个数C.返回值类型D.参数顺序 关于new运算符的下列描述中,()是错误的。A .它可以用来动态创建对象和对象数组B .使用它创建对象或对象数组,可以使用运算符DELETE删除C .使用它创建对象时要调用构造函数D .使用它调用对象数组时不许指定初始值 如果一个类至少有一个纯虚函数,那么就称该类为()。A .抽象类B.派生类C .纯

27、基类D .以上都不对有如下程序:#in clude <iostream> using n amespace std;class Apublic:virtual void f() cout<<1;void g() cout<<2; ;class B: public Apublic: virtual void f() cout<<3;void g() cout<<4; ;void show(A &a) a.f(); a.g();int mai n() B b; show(b); return 0; 运行时的输出结果是()A.12

28、B.34 C.14 D.32下列虚基类的声明中,正确的是()A. class virtual B:public A B. virtual class B:public AC. class B:public A virtual D. class B: virtual public A 派生类的对象对它的基类成员中()是可以访问的A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员 已知数组arr的定义如下:int arr5 = 1,2,3,4,5;下列语句中输出结果不是2的是()A.cout << *arr+1 <<e ndl; B.c

29、out << *(arr+1)<<e ndl;C.cout << arr1 <<e ndl; D.cout << *arr <<e ndl; 下列运算符中,()运算符在C+中不能重载。A . ?: B. C . new D. && 有如下程序:#i nclude <iostream>using n amespace std;class Apublic:virtual void f() cout<<1;void g() cout<<2;class B: public Apu

30、blic: virtual void f() cout<<3;void g() cout<<4; ;void show(A &a) a.f(); a.g();int mai n() B b; show(b); return 0; 运行时的输出结果是()A . 12 B. 34 C. 14 D. 32有如下程序段:int i=4; int j=1;int mai n() int i=8,j=i; coutvvivvjvve ndl;运行时的输出结果是()A. 44 B. 41 C. 88 D. 81下列情况中,不会调用拷贝构造函数的是()O A .用一个对象去初始

31、化同一类的另一个新对象时B .将类的一个对象赋予该类的另一个对象时C.函数的形参是类的对象,调用函数进行形参和实参结合时 D .函数的返回值是类的对象,函数执行返回调用时 下面对静态数据成员的描述中,正确的是()。A .静态数据成员是类的所有对象共享的数据 B .类的每一个对象都有自己的静态数据成员 C.类的不同对象有不同的静态数据成员值 D .静态数据成员不能通过类的对象调用 下面的函数调用fun (a+b,3,max( n-1)*b)则fun的实参个数是()。A . 3 B. 4 C. 5 D. 6 已知函数fun的原型为 int fun (i nt ,i nt ,i nt)下列重载函数原

32、型中错误的是()A.char fun (i nt,i nt); B.double fun (i nt,i nt,double);C.i nt fun (in t,char *); D.float fun (i nt,i nt,i nt); 下面描述中,正确的是()。A. virtual可以用来声明虚函数B 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C 即使基类的构造函数没有参数,派生类也必须建立构造函数D 静态数据成员可以通过成员初始化列表来初始化有如下类定义:class MyBaseint k;public:MyBase(int n=O):k(n)int value()c on

33、streturn k;class MyDerived: MyBaseint j;public:MyDerived(i nt i): j(i)int getK()c onst retur n k;int gutj()c on stretur n j;编译时发现有一处语法错误,对这个错误最佳准确的描述是()A.在类MyDerived的定义中,基类名 MyBase前缺少关键字public、protected 或 privateB .函数getK试图访问基类的私有成员变量 kC.类MyDerived缺少一个无参的构造函数D .类MyDerived的构造的数没有对基数数据成员k进行初始化关于多继承二义性

34、的描述,()是错误的。A .派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义 性B .派生类和它的基类中出现同名函数时,将可能出现二义性C. 一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共 基类的访问可能出现二义性D .解决二义性最常用的方法是作用域运算符对成员进行限定有如下的运算重载函数定义:double operator+(i nt i, i nt k)retur n double(i+k);但定义有错误,对这个错误的最准确的描述是()。A . +只能作为成员函数重载,而这里的+是作为非成员函数重载的B .两个int型参数的和应该是int型,而这里将+

35、的返回类型声明为doublec 没有将运算符重载函数声明为某个类的友元D C+已经提供了求两个int型数据之和运算符+,不能再定义同样的运算符 关于友兀的描述中,()是错误的。A 友元函数是成员函数,它被说明在类体内B 友元函数可直接访问类中的私有成员C.友元函数破坏封装性,使用时尽量少用D 友元类中的所有成员函数都是友元函数class Pare ntspublic: int publicData;private: int privateData;class ChildA: public Pare nts/* 类体略 */;class ChildB: private Pare nts/* 类体

36、略 */;ChildA a; ChildB b;下面语句中正确的是:()A. coutvva.publicDatavve ndl; B. cout<<a.privateData<<e ndl;C. coutvvb.publicDatavve ndl; D. cout<<b.privateData<<e ndl;对C+编译器区分重载函数无任何意义的信息是()A .参数类型B.参数个数C 返回值类型D .常成员函数关键字con st下面的程序段的运行结果为()char str = "job", *p = str;cout <

37、< *(p+2) << en dl;A) 98 B)无输出结果C)字符b勺地址D)字符b'已知表达式+a中的“ +是作为成员函数重载的运算符,则与+a等效的运算符 函数调用形式为()A. a.operator+(1) B. operator+(a) C. operator+(a,1) D. a.operator+() 下列运算符中,不能重载的是()A . && B . != C .(成员访问运算符)D .->已知有数组定义char a34;下列表达式中错误的是()A. a2= ” WIN' B. strcpy(a2, ” WIN'

38、)C. a23=?W? D. a01=a01有如下程序:#i nclude <iostream>using n amespace std;class Toypublic:Toy(char* _n) strcpy (n ame,_n); coun t+;Toy() cou nt-; char* GetName() return n ame; static int getCo un t() retur n coun t; private:char n ame10;static int coun t; ;int Toy:co un t=0;int mai n()Toy t1(“Snoop

39、y” ),t2(“ Mickey ” ),t3(“ Barbie ” );cout<<t1.getCo un t()<<e ndl;return 0; 运行时的输出结果是()A. 1 B.2 C.3 D.运行时出错将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是()A 不合法的运算符B 一元运算符C无操作数的运算符D 二元运算符有如 下程序:#i nclude <iostream>using n amespace std;class Toypublic:Toy(char* _n) strcpy (n ame,_n); coun t+;Toy()

40、cou nt-; char* GetName() return n ame; static int getCo un t() retur n coun t; private:char n ame10;static int coun t; ;int Toy:co un t=0;int mai n()Toy t1(“Snoopy” ),t2(“ Mickey ” ),t3(“ Barbie ” );cout<<t1.getCo un t()<<e ndl;return 0; 运行时的输出结果是()A . 1 B. 2 C. 3 D.运行时出错有如下两个类定义class AA

41、;class BB AA v1,*v2; BB v3; int *v4; ;其中有一个成员变量的定义是错误的,这个变量是()A . v1 B. v2 C. v3 D . v4有如下类定义:class XXint xdata;public: XX(i nt n=0) : xdata (n) ;class YY : public XX int ydata;public: YY(i nt m=0, i nt n=0) : XX(m), ydata( n) ;YY类的对象包含的数据成员的个数是()A. 1 B. 2 C. 3 D. 4字符串常量"MyName'n"在内存中需

42、要占用()字节A . 6 B. 7 C. 8 D . 9下列表达方式正确的是()。A. class P B . class Ppublic: public:int x=15 ; int x ;void show()cout<<x ; void show()cout<<x ; ; C. class P D. class Pint f; public : ; int a;f=25; void Seta (int x) a=x;关于友兀的描述中,()是错误的。A .友元函数是成员函数,它被说明在类体内B .友元函数可直接访问类中的私有成员C.友元函数破坏封装性,使用时尽量少用

43、D .友元类中的所有成员函数都是友元函数有如下程序段:int i=4; int j=1;int mai n() int i=8,j=i;coutvvivvjvve ndl;运行时的输出结果是()A. 44 B. 41 C. 88 D. 81已知表达式+a中的“ +是作为成员函数重载的运算符,则与+a等效的运算符 函数调用形式为(A. a.operator+(1) B. operator+(a)C. operator+(a,1) D. a.operator+()#in clude<iostream>using n amespace std; class Test public:Tes

44、t()Test()cout<<#;int mai n()Test temp2, *pTemp2;)return 0;执行这个程序输出星号(#)的个数为()。A. 1 B. 2 C. 3 D. 4关于多继承二义性的描述,()是错误的。A .派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义 性B .一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共 基类的访问可能出现二义性C.解决二义性最常用的方法是作用域运算符对成员进行限定 D .派生类和它的基类中出现同名函数时,将可能出现二义性 将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是(A .

45、不合法的运算符B .一元运算符C.无操作数的运算符D .二元运算符 有如下程序#i nclude <iostream>using n amespace std; class A public:A(i nt i):r1(i) void print() cout<<?E?<<r1<<? -,;void prin t() const cout<<?C?<<r1*r1<<? -,;private: in t r1; ;int mai n()A al(2); const A a2;al.pri nt();a2.pri n

46、t();return 0;运行时的输出结果是()A .运行时出错 B. E2-C16- C. C4-C16- D . E2-E4-下列有关运算符函数的描述中,错误的是()A .运算符函数的名称总是以operator为前缀B .运算符函数的参数可以是对象 C.运算符函数只能定义为类的成员函数D .在表达式中使用重载的运算符相当于调用运算符重载函数 下列关于this指针的说法正确的是()A. this指针存在于每个函数之中B. 在类的非静态函数中this指针指向调用该函数的对象C. this指针是指向虚函数表的指针D. this指针是指向类的函数成员的指针 有如下程序段:int i=5;while

47、 (int i=0) cout<<"*" i-; 运行时输出“*的个数是()A. 0 B.1 C. 5 D.无穷下列有关内联函数的叙述中,正确的是()。)A .内联函数在调用时发生控制转移B .内联函数必须通过关键字in li ne来定义C.内联函数是通过编译器来实现的D .内联函数体的最后一条语句必须是return语句一个类可包含析构函数的个数是()A . 0个B. 1个C.至少一个 D . 0个或多个 关于虚函数的描述中,正确的是()。A .虚函数是一个static类型的成员函数B .虚函数是一个非成员函数C.基类中说明了虚函数后,派生类中将其对应的函数可不

48、必说明为虚函数 D .派生类的虚函数与基类的虚函数具有不同的参数个数和类型下面对于友元函数描述正确的是()A 友元函数的实现必须在类的内部定义B 友元函数是类的成员函数C 友元函数破坏了类的封装性和隐藏性D 友元函数不能访问类的私有成员在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()A .派生类的对象可以赋给基类的对象B .派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员D .派生类的对象的地址可以赋给指向基类的指针下列关于虚基类的描述,错误的是()A .设置虚基类的目的是为了消除二义性B .虚基类的构造函数在非虚基类之后调用C.只有最远派生类的

49、构造函数调用虚基类的构造函数D .若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类 的构造函数 下面描述中,表达错误的是()A .公有继承时基类中的 B .公有继承是基类中的 C.公有继承时基类中的 D .私有继承时基类中的public成员在派生类中仍是public的 private成员在派生类中仍是private的 protected成员在派生类中仍是 protected的 public成员在派生类中是 private的 10.关于new运算符的下列描述中,错误的是()A .它可以用来动态创建对象和对象数组B .使用它创建的对象和对象数组可以使用运算符delete删除C.使

50、用它创建对象时要调用构造函数D .使用它创建对象数组时必须指定初始值if语句的语法格式可描述为格式1: if (条件) 语句 或 格式2: if (条件) 语句1elseg句2关于上面的语法格式,下列表述中错误的是()A. 条件 部分可以是一个if语句,例如if(if(a =0)?)?B. 语句部分可以是一个if语句,例如if(?)if(?)?C. 如果在 条件前加上逻辑非运算符!并交换 语句1和语句2的位置,语 句功能不变D. 语句 部分可以是一个循环语句,例如if(?)while (? ) ?有如下类定义和变量定义:下列情况中,不会调用拷贝构造函数的是()。A 用一个对象去初始化同一类的另

51、一个新对象时B 将类的一个对象赋予该类的另一个对象时C函数的形参是类的对象,调用函数进行形参和实参结合时D 函数的返回值是类的对象,函数执行返回调用时 有如下类定义:class XX int xx;public:XX():xx(O) cout«?A?;XX( int n):xx( n) cout<<?B?; ;class YY: public XX int yy;public:YY():yy(O) coutvvyy;YY(i nt n): XX(n+1), yy( n) cout<<yy;YY(int m,int n):XX(m),yy(n)cout<&

52、lt;yy;下列选项中,输出结果为A0的语句是()A . YY y1(0,0); B . YY y2(1); C . YY y3(0); D . YY y4;下面对静态数据成员的描述中,正确的是()。A.静态数据成员可以在类体内进行初始化B.不能用参数初始化表对静态数据成员初始化C.静态数据成员只能用类名调用 D.静态数据成员在定义对象时被分配空间 对C+编译器区分重载函数无任何意义的信息是()A .参数类型B.参数个数C.返回值类型D .常成员函数关键字con st 下面()项是对构造函数和析构函数的正确定义。A. void X:X(), void X:X()B. X:X(参数),X:X()

53、C . X:X(参数),X:X(参数)D . void X:X(参数),void X:X(参数)有如下程序段:int i=4; int j=1;int mai n() int i=8,j=i; cout<<i<<j<<e ndl; 运行时的输出结果是()A. 44 B. 41 C. 88 D. 81C+中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运 行;另一种是通过()派生了新的类。A.复用B.继承C.封装D.引用 下列对继承的描述中,错误的是()。A. 析构函数不能被继承B. 派生类也是基类的组合C. 派生类的成员除了它自己的成员外,还包

54、含了它的基类的成员D. 派生类中继承的基类成员的访问权限到派生类保持不变 派生类的对象对它的基类成员中()是可以访问的。A.公有继承的公有成员B.公有继承的私有成员C. 公有继承的保护成员D.私有继承的公有成员 下列说法错误的是()。A. 公有继承的基类中的public成员在派生类中仍是public的B. 公有继承的基类中的private成员在派生类中仍是private的C. 私有继承的基类中的public成员在派生类中变成private的D. 保护继承的基类中的public成员在派生类中变成protected的 C+类体系中,不能被派生类继承的有()。A.构造函数B.虚函数C.静态成员函数D

55、.赋值操作函数 拷贝构造函数具有的下列特点中,()是错误的。A. 如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的B. 拷贝构造函数只有一个参数,并且是该类对象的引用C. 拷贝构造函数是一种成员函数D. 拷贝构造函数的名字不能用类名下列关于虚基类的描述中,错误的是()A 使用虚基类可以消除由多继承产生的二义性B 构造派生类对象时,虚基类的构造函数只被调用一次C.声明“class B : virtual public A说明类B”为虚基类D .建立派生类对象时,首先调用虚基类的构造函数 有如下程序#i nclude <iostream>using n amespace s

56、td;class A public:A(i nt i):r1(i) void print() cout<<?E?<<r1<<? -,;void prin t() const cout<<?C?<<r1*r1<<? -,;private:in t r1;int mai n()A al(2); const A a2;al.pri nt();a2.pri nt();Retur n 0;运行时的输出结果是()A .运行时出错 B. E2-C16- C. C4-C1. D. E2-E4- 下列对派生类的描述中,()是错误的。A . 一个派生类可以作为另一个派生类的基类B .派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类成员 D .派生类中继承的基类成员的

温馨提示

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

评论

0/150

提交评论