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

下载本文档

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

文档简介

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

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

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

4、语句以_ 作为结束符。14. 若 p 指针指向字符串 “ ABCDEFGHIJKL”,则语句 cout20; i- =2) couti20; i- =2) couti?,?;运行时循环体的执行次数是46. 类中构造函数有 个,析构函数有 个。47. 有如下类定义:class Samplepublic:Sample();Sample();private:static int date;将静态数据成员data初始化为 0 的语句是 。48. 假定 p 所指对象的值为 25, p+1 所指对象的值为 46,则执行 “ (*p)+; ”语句后, p 所指对象的值为 。49. 若在类的定义体中只给出了一

5、个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上类名和两个 _分隔符。50. 若需要把一个函数 “ void F( ;) ”定义为一个类 AB 的友元函数,则应在类 AB的定义中加入一条语句:。51. 若要把类外定义的成员函数规定为内联函数,则必须把_关键字放到函数原型或函数头的前面。52. 为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上 _关键字。53. 程序段 i=5;j=0;j=+i+j ;输出结果为54. 类定义中,既包含数据成员,也包含 _成员。55. 假定 AB 为一个类,则执行 “ AB a10; 语”句时,系统自动调用该

6、类的构造函数的次数为 ,其构造函数名是 。56. 假定一个类对象数组为 AN ,当离开它的作用域时,系统自动调用该类析构函数的次数为 _。57. 已知数组 a 中的元素个数为 n,下列语句的作用是将下标为 i 的元素移动到下标为 i1 的单元,其中 1in。例如,当 n=4,a 中原有数据为 1,2,3,4 时,则移动后 a 中元素为 2,3,4,4。请将语句补充完整:for(int i=0;i20; i- =2) coutiC. cout” Hello wordn” D.ciny);Bif (x=y)& ( x!=0 ) x+=y;Cif (x!=y ) cinx ;else ciny;Di

7、f(xy) x+ ; y+; int x=-1;dox=x*x;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+

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

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

10、.1C.5D.无穷运算符重载时不需要保持的性质是()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(); B.a.SetData(10); C.b.GetData(); D. b.SetData(10);对类的构造函数和析构函数描述正确的是( )A. 构造函数可以重载

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

12、个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( )。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()coutx ; void show()coutx ; ; C class P D. cla

13、ss 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, *p = new Sample;A.0 B. 1 C.

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

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

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

17、X (*p)4 C ( X*) p4 D X *p假定 X 为一个类,则该类的复制构造函数的声明语句为()。A My Class(My Class x) BMy Class&(My Class x)CMy Class(My Class &x) D My Class(My Class *x)以下正确的说法是( )。A. 实参和其对应的形参各占用独立的存储单元。B.实参和其对应的形参共占用一个存储单元。C.只有当实参和与其对应的形参同名时才共占用存储单元。D.形参是虚拟的,不占用存储单元。下列关于多态性的描述,错误的是( )。A C+语言的多态性分为编译时的多态性和运行时的多态性对 C+编译器区分

18、重载函数无任何意义的信息是 ( ) A. 参数类型 B.参数个数关于 new 运算符的下列描述中,()是错误的。A 它可以用来动态创建对象和对象数组B使用它创建对象或对象数组 ,可以使用运算符 DELETE 删除C使用它创建对象时要调用构造函数D使用它调用对象数组时不许指 定初始值如果一个类至少有一个纯虚函数,那么就称该类为()。A 抽象类 B派生类 C纯基类 D以上都不对 有如下程序:#include using namespace std;class Apublic:virtual void f() cout1;void g() cout2; ;class B: public Apubli

19、c: virtual void f() cout3;void g() cout4; ;void show(A &a) a.f(); a.g();int main() B b; show(b); return 0; 运行时的输出结果是()A.12 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. 公有继承的公有成

20、员 B.公有继承的私有成员C.公有继承的保护成员 D.私有继承的公有成员已知数组 arr 的定义如下:int arr5 = 1,2,3,4,5;下列语句中输出结果不是2的是( )A.cout *arr+1 endl; B.cout *(arr+1)endl;C.cout arr1 endl; D.cout *arr endl;下列运算符中,()运算符在 C+中不能重载。A ?: B C new D & 有如下程序:#include using namespace std;class Apublic:virtual void f() cout1;void g() cout2;class B: p

21、ublic Apublic: virtual void f() cout3;void g() cout4; ;void show(A &a) a.f(); a.g();int main() B b;show(b);return 0; 运行时的输出结果是()A12 B34 C14 D32有如下程序段:int i=4; int j=1;int main() int i=8,j=i;coutijendl;运行时的输出结果是()A44 B41 C88 D81下列情况中,不会调用拷贝构造函数的是( ) 。A 用一个对象去初始化同一类的另一个新对象时B将类的一个对象赋予该类的另一个对象时C函数的形参是类的

22、对象,调用函数进行形参和实参结合时D函数的返回值是类的对象,函数执行返回调用时下面对静态数据成员的描述中,正确的是( )。A 静态数据成员是类的所有对象共享的数据B类的每一个对象都有自己的静态数据成员C类的不同对象有不同的静态数据成员值D静态数据成员不能通过类的对象调用下面的函数调用fun(a+b,3,max(n-1)*b)则 fun 的实参个数是()。A3 B4 C5 D 6已知函数 fun 的原型为int fun(int ,int ,int)下列重载函数原型中错误的是()A.char fun(int,int); B.double fun(int,int,double);C.int fun(

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

24、turn k;int gutj()constreturn j;编译时发现有一处语法错误,对这个错误最佳准确的描述是( )A 在类 MyDerived 的定义中,基类名MyBase 前缺少关键字 public、 protected或 privateB函数 getK 试图访问基类的私有成员变量kC类 MyDerived 缺少一个无参的构造函数D类 MyDerived 的构造的数没有对基数数据成员 k 进行初始化关于多继承二义性的描述,( )是错误的。A 派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B派生类和它的基类中出现同名函数时,将可能出现二义性C一个派生类是从具有共同的

25、间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性D解决二义性最常用的方法是作用域运算符对成员进行限定有如下的运算重载函数定义:double operator+(int i, int k)return double(i+k);但定义有错误,对这个错误的最准确的描述是( )。A +只能作为成员函数重载,而这里的+是作为非成员函数重载的B两个 int 型参数的和应该是int 型,而这里将 +的返回类型声明为doubleC没有将运算符重载函数声明为某个类的友元DC+已经提供了求两个 int 型数据之和运算符 +,不能再定义同样的运算符关于友元的描述中,( )是错误的。A 友元函数是成

26、员函数,它被说明在类体内 B友元函数可直接访问类中的私有成员C友元函数破坏封装性,使用时尽量少用 D友元类中的所有成员函数都是友元函数class Parentspublic: int publicData;private: int privateData;class ChildA: public Parents/* 类体略 */;class ChildB: private Parents/*类体略 */;ChildA a; ChildB b;下面语句中正确的是: ( )A. couta.publicDataendl; B. couta.privateDataendl;C. coutb.publ

27、icDataendl; D. coutb.privateDataendl;对 C+编译器区分重载函数无任何意义的信息是 ( ) A 参数类型 B参数个数C返回值类型 D 常成员函数关键字const下面的程序段的运行结果为()char str = job, *p = str;cout *(p+2) 已知有数组定义char a34;下列表达式中错误的是 ( )A. a2=” WIN” B. strcpy(a2,” WIN”)C. a23=?W? D. a01=a01有如下程序:#include using namespace std;class Toypublic:Toy(char* _n) st

28、rcpy (name,_n); count+;Toy() count-; char* GetName() return name; static int getCount() return count; private:char name10;static int count; ;int Toy:count=0;int main()Toy t1(“ Snoopy” ),t2(“ Mickey ” ),t3(“ Barbie ” );coutt1.getCount()endl;return 0; 运行时的输出结果是 ( )A.1 B.2 C.3 D.运行时出错将运算符重载为类成员函数时,其参数表

29、中没有参数,说明该运算是( )A 不合法的运算符 B一元运算符 C无操作数的运算符 D二元运算符 有如下程序:#include using namespace std;class Toypublic:Toy(char* _n) strcpy (name,_n); count+;Toy() count-; char* GetName() return name; static int getCount() return count; private:char name10;static int count; ;int Toy:count=0;int main()Toy t1(“ Snoopy”

30、),t2(“ Mickey ” ),t3(“ Barbie ” );coutt1.getCount()endl;return 0; 运行时的输出结果是 ( )A 1 B2 C3 D运行时出错有如下两个类定义class AA;class BB AA v1,*v2; BB v3; int *v4; ;其中有一个成员变量的定义是错误的,这个变量是( )A v1 B v2 C v3 D v4有如下类定义:class XXint xdata;public: XX(int n=0) : xdata (n) ;class YY : public XX int ydata;public: YY(int m=0

31、, int n=0) : XX(m), ydata(n) ;YY 类的对象包含的数据成员的个数是 ( ) A1 B2 C3 D 4字符串常量 MyNamen 在内存中需要占用( )字节A6 B7 C 8 D 9下列表达方式正确的是()。A class P B class Ppublic: public :int x=15; int x ;void show()coutx ; void show()coutx ; ; C class P D. class Pint f; public : ; int a;f=25; void Seta (int x) a=x;关于友元的描述中,()是错误的。A

32、友元函数是成员函数,它被说明在类体内B友元函数可直接访问类中的私有成员C友元函数破坏封装性,使用时尽量少用 D友元类中的所有成员函数都是友元函数 有如下程序段:int i=4; int j=1;int main() int i=8,j=i;coutijendl;运行时的输出结果是()A44 B41 C88 D81已知表达式 +a 中的 “+”是作为成员函数重载的运算符,则与 +a 等效的运算符函数调用形式为 (A a.operator+(1) B operator+(a)Coperator+(a,1) D a.operator+()#includeusing namespace std;cla

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

34、符 B一元运算符C无操作数的运算符 D 二元运算符有如下程序#include using namespace std;class A public:A(int i):r1(i) void print() cout?E?r1? -,;void print() const cout?C?r1*r1? -,;private:int r1; ;int main()A al(2); const A a2(4);al.print();a2.print();return 0;运行时的输出结果是 ( )A 运行时出错 BE2-C16- CC4-C16- DE2-E4-下列有关运算符函数的描述中,错误的是( )

35、A 运算符函数的名称总是以operator为前缀B运算符函数的参数可以是对象C运算符函数只能定义为类的成员函数D在表达式中使用重载的运算符相当于调用运算符重载函数下列关于 this 指针的说法正确的是( ) A. this 指针存在于每个函数之中B. 在类的非静态函数中this 指针指向调用该函数的对象C. this 指针是指向虚函数表的指针D. this 指针是指向类的函数成员的指针有如下程序段:int i=5;while (int i=0) cout*; i-;运行时输出 “*的”个数是 ( )A.0B.1C.5D.无穷下列有关内联函数的叙述中,正确的是()。)A 内联函数在调用时发生控制

36、转移B内联函数必须通过关键字inline 来定义C内联函数是通过编译器来实现的D内联函数体的最后一条语句必须是return 语句一个类可包含析构函数的个数是()A0 个 B1 个 C至少一个 D0 个或多个关于虚函数的描述中,正确的是()。A 虚函数是一个static 类型的成员函数B虚函数是一个非成员函数C基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数D派生类的虚函数与基类的虚函数具有不同的参数个数和类型下面对于友元函数描述正确的是( )A 友元函数的实现必须在类的内部定义B友元函数是类的成员函数C友元函数破坏了类的封装性和隐藏性D友元函数不能访问类的私有成员在公有派生情况下

37、,有关派生类对象和基类对象的关系,下列叙述不正确的是( )A 派生类的对象可以赋给基类的对象B派生类的对象可以初始化基类的引用C派生类的对象可以直接访问基类中的成员D派生类的对象的地址可以赋给指向基类的指针下列关于虚基类的描述,错误的是( )A 设置虚基类的目的是为了消除二义性B虚基类的构造函数在非虚基类之后调用C只有最远派生类的构造函数调用虚基类的构造函数D若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数 下面描述中,表达错误的是( )A 公有继承时基类中的 public 成员在派生类中仍是 public 的B公有继承是基类中的 private 成员在派生类中仍是

38、 private 的C公有继承时基类中的 protected成员在派生类中仍是 protected的D私有继承时基类中的 public 成员在派生类中是 private 的10. 关于 new 运算符的下列描述中,错误的是( )。A 它可以用来动态创建对象和对象数组B使用它创建的对象和对象数组可以使用运算符 delete删除C使用它创建对象时要调用构造函数D使用它创建对象数组时必须指定初始值if 语句的语法格式可描述为格式 1: if ( )或格式 2: if ( )else关于上面的语法格式,下列表述中错误的是( )A 部分可以是一个if 语句,例如 if(if(a =0) ? )?B部分可

39、以是一个if 语句,例如 if( ? )if( ? )?C如果在 前加上逻辑非运算符!并交换和的位置,语句功能不变D部分可以是一个循环语句,例如if( ? )while ( ? )?有如下类定义和变量定义:下列情况中,不会调用拷贝构造函数的是( )。A 用一个对象去初始化同一类的另一个新对象时B将类的一个对象赋予该类的另一个对象时C函数的形参是类的对象,调用函数进行形参和实参结合时D函数的返回值是类的对象,函数执行返回调用时有如下类定义:class XX int xx;public:XX():xx(0) cout?A?;XX( int n):xx(n) cout?B?; ;class YY: public XX int yy;public:YY():yy(0) coutyy;YY(int n): XX(n+1), yy(n) coutyy;YY(int m,int n):XX(m),yy(n)coutyy; ;下列选项中,输出结果为A0 的语句是 ( )A YY y1(0,0); B YY y2(1); C YY y3(0); D YY y4; 下面对静态数据成员的描述中,正确的是( )。A. 静态数据成员可以在类体内进行初始

温馨提示

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

评论

0/150

提交评论