C++程序设计》22春在线作业1-0002
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 60 分)
1.假定classA为一个类,则执行“classA x(5);”语句时将自动调用该类的()。
A.无参构造函数
B.带参构造函数
C.复制构造函数
D.赋值重载函数
答案:B
2.下列格式控制符中不是定义于iostream.h中的是()。
A.endl
B.hex
C.flush
D.setw
答案:D
3.下面关于运算符重载的描述错误的是()。
A.重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
B.不是所有的运算符都可以进行重载
C.运算符函数的调用必须使用关键字operator
D.在C++语言中不可通过运算符重载创造出新的运算符
答案:C
4.read()函数的功能是从输入流中读取()。
A.一个字符
B.当前字符
C.一行字符
D.指定若干个字符
答案:D
5.当将一个类A说明为另一个类B的友元后,类A能够直接访问类B的()。
A.只能是公有成员
B.只能是保护成员
C.只能是除私有成员之外的任何成员
D.具有任何权限的成员
答案:D
6.在一个类的定义中,包含有数据成员和()的定义。
A.数据
B.函数
C.成员函数
D.友元
答案:C
7.假设定义了一个具有构造函数的book类,构造函数只有一个非默认的整型参数,则下列的类型转换错误的是()。
A.book(12)
B.(book20);
C.book x=2;
D.book x=book(2);
答案:B
8.假定一个类A只含有一个整型数据成员x,当用户不定义任何构造函数时,系统为该类定义的默认无参构造函数为()。
A.A(){x=0;}
B.A(int a=0):x(a){}
C.A(){}
D.A(int a):x(a){}
答案:C
9.要想以读方式打开文件“D:\File.txt”,以下不能实现目的的语句是()。
A.ifstream inf("D:\\File txt",ios::in);
B.ifstream inf("D:\\File.txt");
C.ofstream inf("D:\\File.txt",ios::out);
D.fstream inf("D:\\File.txt",ios::in|ios::out);
10.决定C++语言中函数的返回值类型的是()。
A.return语句中的表达式类型
B.调用该函数时系统随机产生的类型
C.调用该函数时的主调用函数类型
D.在定义该函数时所指定的数据类型
11.下列输出字符'A'的方法中,错误的是()。
A.cout<<put('A');
B.cout<<'A';
C.cout.put('A');
D.char a='A';cout<<a;
12.下面对静态数据成员的描述中,正确的是()。
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以被类的对象调用
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名调用
13.当使用fstream流类定义一个流对象并打开一个磁盘文件时, 文件的隐含打开方式为()。
A.ios::in
B.ios::out
C.ios::in|ios::out
D.以上都不对
14.使用派生类的主要原因是()。
A.提高代码的可重用性
B.提高程序的运行效率
C.加强类的封装性
D.实现数据的隐藏
15.C++利用()实现面向对象程序设计的继承性。
A.构造数据类型—类
B.类的派生机制
C.构造数据类型—枚举
D.函数重载与运算符重载
16.假定classA为一个类,f()为该类公有的数据成员,x为该类的一个对象,则访问x对象中成员函数f()的格式为()。
A.x.f
B.x.f()
C.x->f
D.x->f()
17.C++的继承性允许派生类继承基类的()。
A.部分特性,并允许增加新的特性或重定义基类的特性
B.部分特性,但不允许增加新的特性或重定义基类的特性
C.所有特性,并允许增加新的特性或重定义基类的特性
D.所有特性,但不允许增加新的特性或重定义基类的特性
18.下面对于指针的描述不正确的是()。
A.指针是地址变量
B.指针不能用除0以外的常量赋值
C.两个指针变量的加减法无意义
D.指针指向不同基类型的变量长度不同
19.在I/O流库中定义的控制输出宽度的函数为()。
A.width()
B.fill()
C.precision()
D.setw()
20.如果一个类至少有一个纯虚函数,那么该类就被称为()。
A.抽象类
B.纯基类
C.基类
D.虚基类
二、判断题 (共 20 道试题,共 40 分)
21.静态的成员函数没有隐含的this指针 ,所以它们只能访问静态的数据成员。
22.凡是左操作数必须为本类对象的运算符均应以类成员函数的方式重载。
23.原型说明中没有指出返回类型的函数(包括主函数main),C++默认该函数的返回类型是void
24.如果要在程序中使用IO流库,应包含头文件iostream.h。
25.C++利用类来实现面向对象程序设计的继承性。
26.IO流库重载的插入和析取运算符能处理所有的数据类型(包括自定义类型)。
27.C++不允许定义有默认参数的函数。
28.在面向对象的程序设计中,将一组对象的共同特性抽象出来形成类。
29.一个类的友元一定是另一个类的成员函数。
30.cout通常与显示器相连,cin通常与键盘相连。
31.IO流库中定义的格式操作符ws表示跳过输入流前面的空白字符。
32.在C++中,构造派生类对象时,总是先从基类的初始化开始的。
33.在一般的成员函数中都隐含有一个this指针,用来指向对象自身,而在静态成员函数中是没有this指针的。
34.类和对象之间的关系是抽象和具体的关系。
35.公有继承方式下,基类成员的访问权限在派生类中保持不变。
36.若左操作数为基本数据类型或其它类对象时,此运算符应以友元函数的方式重载。
37.编译时的多态是通过动态联编来实现的,运行时的多态是通过静态联编实现的。
38.构造函数是不能说明它的返回值类型的,但可以说明为void类型。
39.C++对由const修饰符定义的常量进行严格的类型检查,但对用define定义的常量则不进行类型检查。
40.构造函数和析构函数既可以由程序员调用,也可以由系统自动调用。
C++程序设计》22春在线作业2-0003
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 60 分)
1.假定指针变量p定义“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句()。
A.delete *p;
B.delete &p;
C.delete p;
D.delete []p;
答案:C
2.下面关于运算符重载的描述错误的是()。
A.重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
B.不是所有的运算符都可以进行重载
C.运算符函数的调用必须使用关键字operator
D.在C++语言中不可通过运算符重载创造出新的运算符
答案:C
3.类中定义的成员默认为()访问属性。
A.public
B.private
C.protected
D.friend
答案:B
4.下列选项中,()是istream类的对象。
A.cin
B.cout
C.cerr
D.clog
答案:A
5.析构函数是一种特殊的成员函数,显式定义时其访问属性应被定义为()。
A.public
B.private
C.protected
D.static
答案:A
6.关于函数模板,描述错误的是()。
A.函数模板必须由程序员实例化
B.函数模板的实例化由编译器实现
C.一个类定义中,只要有一个函数模板,则这个类是类模板
D.若类模板的成员函数是函数模板,则类模板实例化后,成员函数也随之实例化
答案:A
7.下列关于运算符重载的描述中,正确的是()。
A.可以改变运算符的目数
B.可以改变运算符的优先级
C.可以改变运算符的结合性
D.可以改变运算符的功能
8.面向对象程序设计将数据与()放在一起,作为一个相互依存、不可分割的整体来处理。
A.对数据的操作
B.信息
C.数据隐藏
D.数据抽象
9.在C++中,编写一个内联函数Fun,使用int类型的参数,求其平方并返回,返回值也为int类型,下列定义正确的是()。
A.int Fun(int x){return x*x;}
B.inline int Fun(int x){return x*x;}
C.int inline Fun(int x){return x*x;}
D.int Fun(int x){inline return x*x;}
10.定义类模板时要使用关键字()。
A.const
B.new
C.delete
D.template
11.要将类A说明是类B的虚基类,正确的描述是()。
A.class virtual B:public A
B.class B:virtual public A
C.virtual class B:public A
D.class B:public A virtual
12.下列格式控制符中不是定义于iostream.h中的是()。
A.endl
B.hex
C.flush
D.setw
13.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是()。
A.公有类型
B.私有类型
C.保护类型
D.友元类型
14.()不是构造函数的特征。
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置缺省参数
D.构造函数必须指定类型说明
15.当将一个类A说明为另一个类B的友元后,类A能够直接访问类B的()。
A.只能是公有成员
B.只能是保护成员
C.只能是除私有成员之外的任何成员
D.具有任何权限的成员
16.对于类定义 class A{ public: virtual void func1( ){ } void func2( ){ } }; class B:public A{ public: void func1( ){cout<<″class B func 1″<<end1;} virtual void func2( ){cout<<″class B f
A.A::func2( )和B::func1( )都是虚函数
B.A::func2( )和B::func1( )都不是虚函数
C.B::func1( )是虚函数,而A::func2( )不是虚函数
D.B::func1( )不是虚函数,而A::func2( )是虚函数
17.在关键字public后面定义的成员为类的()成员。
A.公有
B.保护
C.私有
D.任何
18.在一个类的定义中,包含有数据成员和()的定义。
A.数据
B.函数
C.成员函数
D.友元
19.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,隐含的打开方式为()。
A.ios::in
B.ios::out
C.ios::in|ios::out
D.ios::binary
20.类模板的模板参数()。
A.只可作为数据成员的类型
B.只可作用成员函数的返回类型
C.只可作为成员函数的参数类型
D.以上三者皆可
二、判断题 (共 20 道试题,共 40 分)
21.C++利用类来实现面向对象程序设计的继承性。
22.如果一个类至少有一个虚函数,那么该类就被称为抽象类。
23.类中含有指针数据成员时,若不定义拷贝构造函数则会产生指针悬挂问题。
24.成员函数体写在类的外部时一定要在类的内部保留函数声明。
25.创建派生类对象时,先调用基类的构造函数,再调用派生类的构造函数,当销毁这个对象时顺序正好相反,先调用派生类的析构函数,再调用基类的析构函数。
26.操纵符hex、oct、dec只对下一个输出有效。
27.构造函数和析构函数既可以由程序员调用,也可以由系统自动调用。
28.拷贝构造函数使用本类对象的引用作为参数初始化新创建的对象。
29.在文件操作结束时,可以用close()成员函数关闭该文件。
30.当基类含有带参数的构造函数时,派生类可以不定义构造函数。
31.new和delete运算符不可以被重载。
32.构造函数和析构函数都不可以由程序员调用,只能由系统自动调用。
33.私有静态数据成员不能被类外部函数访问,也不能用对象进行访问。
34.指针是个变量,占有单独的内存空间,而引用本身不是变量,不单独占用内存空间。
35.文件流创建方式是打开二进制文件的是ios::binary。
36.常类型是指使用类型修饰符const说明的类型,常类型的变量或对象成员的值在程序运行期间是不可改变的。
37.可以在类的构造函数中对静态数据成员进行初始化。
38.this指针是一个const指针,不能在程序中修改它或给它赋值。
39.多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。
40.二进制文件结束标志为EOF(即-1)。