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