CC++ 练习题2.docx

上传人:b****6 文档编号:7578374 上传时间:2023-01-25 格式:DOCX 页数:32 大小:29.80KB
下载 相关 举报
CC++ 练习题2.docx_第1页
第1页 / 共32页
CC++ 练习题2.docx_第2页
第2页 / 共32页
CC++ 练习题2.docx_第3页
第3页 / 共32页
CC++ 练习题2.docx_第4页
第4页 / 共32页
CC++ 练习题2.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

CC++ 练习题2.docx

《CC++ 练习题2.docx》由会员分享,可在线阅读,更多相关《CC++ 练习题2.docx(32页珍藏版)》请在冰豆网上搜索。

CC++ 练习题2.docx

CC++练习题2

C++练习题

1.  关于类和对象不正确的说法是(     )

A) 类是一种类型,它封装了数据和操作

B) 对象是类的实例

C) 一个类的对象只有一个

D) 一个对象必属于某个类

2.  在类定义的外部,可以被访问的成员有(     )

A)所有类成员                B)private或protected的类成员

C)public的类成员             D)public或private的类成员

3.  关于this指针的说法错误的是(     )

A)this指针必须显示说明                B)当创建一个对象后,this指针就指向该对象

C)成员函数拥有this指针                D)静态成员函数不拥有this指针

4.   声明一个类的对象时,系统自动调用(    )函数,撤消对象时,系统自动调用(     )函数

A)成员函数            B)构造函数                C)析构函数               D)普通函数

5.   下面对构造函数的不正确描述是(     )

A)系统可以提供默认的构造函数                B)构造函数可以有参数,所以可以有返回值

C)构造函数可以重载                                  D)构造函数可以设置默认参数

6.  下面对析构函数的正确描述是(     )

A)系统不能提供默认的析构函数                B)析构函数必须由用户定义

C)析构函数没有参数                                  D)析构函数可以设置默认参数

7.   对静态成员的不正确描述是(     )

A)静态成员不属于对象,是类的共享成员      B)静态数据成员要在类外定义和初始化

C)调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针

D)非静态成员函数也可以操作静态数据成员

8.  下面选项中,不是类的成员函数为(     )

A)构造函数            B)析构函数                C)友元函数             D)缺省参数的构造函数方言

9.   下面对友元的错误描述是(     )

A)关键字friend用于声明友元                                   

B)一个类的成员函数可以是另一个类的友元

C)友元函数访问对象的成员不受访问特性影响       

D)友元函数通过this指针访问对象成员

10.在C++中,类与类之间的继承关系具有(     )

A)自反性                B)对称性             C)传递性                D)反对称性

11. 下列关于类的继承描述中,(     )是错误的

A)  派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数

B)   派生类也是基类,但基类不一定具有派生类的全部属性和方法

C)  继承描述类的层次关系,派生类可以具有与基类相同的属性和方法

D)  一个基类可以有多个派生类,一个派生类可以有多个基类

12. 当一个派生类仅有继承一个基类时,基类中的所有公有成员成为派生类的(     )

A)public成员      B)private成员         C)protected成员                D)友元

13. 当一个派生类私有继承一个基类时,基类中的所有仅有成员和保护成员成为派生类的(     )

A)public成员      B)private成员         C)protected成员                D)友元

14. 不论派生类以何种方法继承基类,都不能使用基类的(     )

A)public成员      B)private成员         C)protected成员                D)public成员和protected成员

15. 下面描述中,错误的是(     )(两个答案)

A)  在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问

B)  在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问

C) 在基类定义的public和protected成员在保护继承的派生类中不可见

D)在派生类中不可见的成员要变成可访问的,需要进行访问声明

16. 在C++中,不能被派生类继承的函数是(     )(两个答案)

A)成员函数            B)构造函数                C)析构函数               D)静态成员函数

17.在创建派生类对象时,构造函数的执行顺序是(     )

A) 对象成员构造函数、基类构造函数、派生类本身的构造函数

B) 派生类本身的构造函数、基类构造函数、对象成员构造函数

C) 基类构造函数、派生类本身的构造函数、对象成员构造函数

D) 基类构造函数、对象成员构造函数、派生类本身的构造函数

18.当不同的类具有相同的间接基类时,有特点(     )(两个答案)

A) 各派生类对象将按继承路线产生自己的基类版本

B)派生类对象无法产生自己的基类版本

C) 为了建立惟一的间接基类版本,在基类定义前加virtual即可

D) 为了建立惟一的间接基类版本,应该声明虚继承

19. 在C++中,要实现动态联编,必须使用(     )调用虚函数

A)类名           B)派生类指针                C)对象名             D)基类指针

20. 下列函数中,可以作为虚函数的是(     )(两个答案)

A)普通函数            B)构造函数                C)成员函数               D)析构函数

21. 在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值(     )

A)不同           B)相同            C)相容                D)部分相同

22.下面函数原型声明中,(     )声明了fun为虚函数

A)voidfun()=0;           B)virtualvoidfun()=0;         

C)virtualvoidfun();         D)virtualvoidfun(){};

23. 若一个类中含有纯虚函数,则该类称为(     )

A)基类           B)纯基类                C)派生类                D)抽象类

24.假设A为抽象类,下列声明(     )是正确的

A)Afun(int);           B)A*p;           C)intfun(A);               D)AObj;

25. 下面描述中,正确的是(     )(两个答案)

A)虚函数是没有实现的函数                B)纯虚函数的实现在派生类中

C)抽象类是没有纯虚函数的类            D)抽象类指针可以指向不同的派生类

26.关于函数模板,描述错误的是(     )

A)  函数模板必须由程序员实例化为可执行的函数模板

B) 函数模板的实例化由编译器实现

C) 一个类定义中,只要有一个函数模板,则这个类是类模板

D) 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

27. 下列的模板说明中,正确提(     )(两个答案)

A) template

B)  template

C) template

D) template

28. 假设有函数模板定义如下:

Template

Max(Ta,Tb,T&c)

{c=a+b;}

下列选项正确的是(     )(两个答案)

A) floatx,y;floatz;    Max(x,y,z);B) intx,y,z;Max(x,y,z);

C)  intx,y;floatz;Max(x,y,z);D) floatx;inty,z;Max(x,y,z);

29.关于类模板,描述错误的是(     )

A) 一个普通基类不能派生类模板

B) 类模板从普通类派生,也可以从类模板派生

C) 根据建立对象时的实际数据类型,编译器把类模板实例化为模板类

D) 函数的类模板参数须通过构造函数实例化

30. 建立类模板对象的实例化过程为(     )

A)基类à派生类             B)构造函数à对象

C)模板类à对象             D)模板类à模板函数

31.在C++中,容器是一种(     )

A)标准类         B)标准对象             C)标准函数             D)标准类模板

32.下列类中(     )(两个答案)不是输入/输出流类iostream的派生类

A)fstream         B)ofstream           C)strstream          D)ostrstream

33.在下列选项中(     )(三个答案)是ostream类的对象

A)cin              B)cerr                C)clog         D)cout

34. read函数的功能是从输入流中读取(     )

A)一个字符            B)当前字符                C)一行字符               D)指定若干个字符

35.下列选项中,用于清除基数格式位置以十六制输出的语句是(     )

A) cout<

:

dec,ios:

:

basefield);

B)   cout<

:

hex,ios:

:

basefield);

C)  cout<

:

oct,ios:

:

basefield);

D)  cin>>setf(ios:

:

hex,ios:

:

basefield);

36. 下列格式控制符,在iostream.h中定义的是(     )(两个答案),在iomanip.h中定义的是(     )(两个答案)

A)endl             B)setfill                C)setw                D)oct

37.下列串流类,在strstream.h中定义的是(     )(两个答案),在sstream.h中定义的是(     )

A)istringstream      B)istrstream                C)ostringstream      D)ostrstream

38. 包含类fstream定义的头文件是(     )

A)fstream.h          B)ofstream.h                C)ifstream.h               D)iostream.h

39.  要求打开文件d:

\file.dat,可写入数据,正确的语句是(     )

A) ifstreaminfile(“d:

\file.dat”,ios:

:

in);

B) ifstreaminfile(“d:

\\file.dat”,ios:

:

in);

C) ofstreaminfile(“d:

\file.dat”,ios:

:

out);

D)fstreaminfile(“d:

\\file.dat”,ios:

:

in|ios:

:

out);

40. 假定已定义浮点型变量data,以二进制方式把data的值写入输出文件流对象outfile中去,正确的语句是(    )

A) outfile.write((float*)&data,sizeof(float));

B) outfile.write((float*)&data,data);

C) outfile.write((char*)&data,sizeof(float));

D) outfile.write((char*)&data,data);

参考答案1-10CCA(BC)B   CCCDC11-20AABB(BC)    (BC)D(AD)D(CD)

21-30BBDB(BD)   A(AD)(AD)DC

31-40D(BD)(BCD)DB(ADBC)(BDAC)ADC

C++程序设计练习2

1、类aClass的定义如下:

classaClass{public:

aClass(){}aClass(inti){value=newint(i);}int*value;}若要对类中的value赋值,则下面的语句中,正确的是()

A、aClassmy;my.value=10;B、aClassmy;*my.value=10;

C、aClassmy;my.*value=10;D、aClassmy(10);

2、每个类()构造函数

A、只能有一个B、只可有公有的C、可以有多个D、只可有缺省的

3、已知类A中的一个成员函数的说明如下:

voidSet(A&a);则该函数的参数“A&a”的含义是()

A、指向A的指针为aB、将变量a的地址赋给类A

C、类A对象引用a用作函数的形参D、变量A与a按位与后作函数参数

4、下列特性中,C与C++共有的是()

A、继承B、封装C、多态性D、函数定义不能嵌套

5、假定AB为一个类,则执行ABx;语句时将自动调用该类的()

A、有参构造函数B、无参构造函数C、拷贝构造函数D、赋值构造函数

6、如果类A被说明成类B的友元,则()

A、类A的成员即类B的成员B、类B的成员即类A的成员

C、类A的成员函数不得访问类B的成员D、类B不一定是类A的友元

7、下列不是类的成员函数的是()

A、构造函数B、析构函数C、友元函数D、拷贝构造函数

8、拷贝(复制)构造函数的作用是

A、进行数据类型的转换B、用对象调用成员函数

C、用对象初始化对象D、用一般类型的数据初始化对象

9、若要把函数voidf()定义为类aClass的友元函数,则应该在类aClass的定义中加入的语句是()

A、voidf();B、staticvoidf();C、friendf();D、friendvoidf();

10、下列关于析构函数的描述中,错误的是()

A、类中有且仅有一个析构函数B、析构函数可以有形参

C、析构函数没有函数类型D、析构函数在对象消失时被自动执行

11、下面对静态数据成员的描述中,正确的是()

A、静态数据成员可以在类体内进行初始化B、静态数据成员不可以被类的对象调用

C、静态数据成员不能受private控制符的作用D、静态数据成员可以直接用类名调用

12、下面关于友元函数的描述中,正确的是()

A、友元函数的实现必须在类的内部定义B、友元函数是类的成员函数

C、友元函数破坏了类的封装性和隐藏性D、友元函数不能访问类的私有成员

13、下列关于new运算符的描述中,错误的是()

A、使用运算符new创建对象组时必须定义初始值

B、使用运算符new创建对象时,会调用类的构造函数

C、运算符new可以用来动态创建对象和对象数组

D、使用new运算符创建的对象可以运用运算符delete删除

14、下列对类的构造函数和析构函数的描述中,正确的是()

A、构造函数可以重载,析构函数不能B、构造函数不能重载,析构函数可以

C、构造函数可以重载,析构函数也可以重载D、构造函数不能重载,析构函数也不能重载

15、在C++中,数据封装要解决的问题是()

A、数据的规范化B、便于数据转换

C、避免数据丢失D、防止不同模块之间数据的非法访问

16、假定MyClass为一个类,那么下列的函数说明中,()为该类的析构函数.

A、void~MyClass();B、~MyClass(intn);C、MyClass();D、~MyClass();

17、为了使类中的成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()

A、publicB、protectedC、privateD、static

18、对于下面定义的类MyClass,在函数f()中将对象成员n的值修改为50的语句(划线处)应该是()

classMyClass

{

public:

MyClass(intx)

{

n=x;

}

voidSetValue(intn1)

{

n=n1;

}

private:

intn;

};

intf()

{

MyClass*ptr=newMyClass(45);

__________;

}

A、MyClass(50)B、SetValue(50)

C、ptr->SetValue(50)D、ptr->n=50

19、类MyClass的定义如下:

classMyClass

{

public:

MyClass()

{

value=0;

}

setVariable(inti)

{

value=i;

}

private:

intvalue;

};

则以下各项对如下语句序列的描述中,正确的是().

MyClass*p,my;p=&my;

A、语句”p=&my;”是把对象my赋值给指针变量p

B、语句”MyClass*p,my;”会调用两次类MyClass的构造函数

C、对语句”*p.SetVariable(5)”的调用是正确的

D、语句”p->SetVariable(5)”与语句”my.SetVariable(5)”等价

20、下面类的定义,有()错误.classMyClass{inti=0;public:

voidMyClass();~MyClass(intValue);};

A、1B、2C、3D、4

21、定义析构函数时,应该注意()

A、其名与类名完全相同B、返回类型是void类型

C、无形参,也不可重载D、函数体中必须有delete语句

22、构造函数不具备的特征的是()

A、构造函数的函数名与类名相同B、构造函数可以重载

C、构造函数可以设置默认参数D、构造函数必须指定返回类型

23、类的析构函数是在什么时间被自动调用的?

()

A、类创建时B、创建对象时

C、删除对象时D、不自动调用

24、对于任何一个类,析构函数最多有()个

A、0B、1C、2D、3

25、通常,拷贝构造函数的参数是()

A、某个对象名B、某个对象的成员名

C、某个对象的引用名D、某个对象的指针名

26、面向对象程序设计中的数据隐藏指的是()

A、输入数据必须输入保密口令

B、数据经过加密处理

C、对象内部数据结构上建有防火墙

D、对象内部数据结构的不可访问性

27、下列关于类的访问权限的描述中,错误的是().

A、说明为公有的成员可以被程序中的任何代码访问

B、说明为私有的成员只能被类的成员和说明为友元类的成员函数访问

C、说明为保护的成员,除了能被本身的成员函数和说明为友元类的成员函数访问外,该类的派生类的成员也可以访问

D、类的所有成员都可以被程序中的任何代码访问

28、一个类的友元函数或友元类可以访问该类的()

A、私有成员

B、保护成员

C、公有成员

D、所有成员

29、下列关于成员函数特征的描述中,错误的是()

A、成员函数一定是内联函数

B、成员函数可以重载

C、成员函数可以设置参数的默认值

D、成员函数可以是静态的

 

继承和派生---练习题

1、下列虚基类的声明中,正确的是( )。

A、classvirtualB:

publicAB、virtualclassB:

publicA

C、classB:

publicAvirtualD、classB:

virtualpublicA

2、C++类体系中,不能被派生类继承的有()。

A、构造函数B、虚函数C、静态成员函数D、赋值操作函数

3、下列说法错误的是()。

A、公有继承的基类中的public成员在派生类中仍是public的

B、公有继承的基类中的private成员在派生类中仍是private的

C、私有继承的基类中的public成员在派生类中变成private的

D、保护继承的基类中的public成员在派生类中变成protected的

4、下列对继承的描述中,错误的是()。

A、析构函数不能被继承

B、派生类也是基类的组合

C、派生类的成员除了它自己的成员外,还包含了它的基类的成员

D、派生类中继承的基类成员的访问权限到派生类保持不变

5、下列对基类和派生类关系的描述中,错误的是()。

A、派生类是基类的具体化

B、派生类是基类的子集

C、派生类是基类定义的延续

D、派生类是基类的组合

6、C++中的类有两种用法:

一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。

A、复用B、继承C、封装D、引用

7、C++类体系中,能被派生类继承的是()

A、构造函数B、虚函数C、析构函数D、友元函数

8、关于多继承二义性的描述,()是错误的。

A、派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性

B、一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性

C、解决二义性最常用的方法是作用域运算符对成员进行限定

D、派生类和它的基类中出现同名函数时,将可能出现二义性

9、下列对派生类的描述中,()是错误的。

A、一个派生类可以作为另一个派生类的基类

B、派生类至少有一个基类

C、派生类的成员除了它自己的成员外,还包含了它的基类成员

D、派生类中继承的基类成员的访问权限到派生类保持不变

10、若类A和类B的定义如下:

classA

{

inti,j;

public:

intgeti(){returni;}

};

classB:

publicA

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1