C++习题 答案.docx
- 文档编号:7471396
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:7
- 大小:19.25KB
C++习题 答案.docx
《C++习题 答案.docx》由会员分享,可在线阅读,更多相关《C++习题 答案.docx(7页珍藏版)》请在冰豆网上搜索。
C++习题答案
选择题
1.C++语言本身没有定义I/O操作,C++标准库iostream提供了基本的I/O类。
I/O操作分别由两个类istream和(C)提供,由它们派生出一个类iostream,提供双向I/O操作。
A.fstreamB.iostreamC.ostreamD.cin
2.引入内联函数的主要目的是(C)。
A. 缩短程序代码,少占用内存空间
B. 既可以保证程序的可读性,又能提高程序的运行效率
C. 占用内存空间少,执行速度快
D. 使程序的结构比较清晰
3.重载函数是(D)
A.以函数参数来区分,而不用函数的返回值来区分不同的函数
B.以函数的返回值来区分,而不用函数参数来区分不同的函数
C.参数表完全相同而返回值类型不同的两个或多个同名函数
D. 参数表和返回值类型都必须是不同的两个或多个同名函数
4.在C++中,数据封装要解决的问题是(D)。
A.数据的规范化B.便于数据转换
C.避免数据丢失D.防止不同模块之间数据的非法访问
5.下列特性中,(B)不是面向对象的程序设计的特征。
A.继承B.内联函数C.多态性D.封装
6.类B的对象必定是类A的对象,但是类A的对象却不属于类B,则类B和类A之间的关系是(C)。
A.组合关系B.间接关系C.继承关系D.直接关系
7.下面对于友元函数描述正确的是(C)。
A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数
C.友元函数破坏了类的封装性D.友元函数不能访问类的私有成员
8.以下关于析构函数的描述中(C)是错误的。
A.析构函数声明和定义中没有形参B.析构函数可以定义为内联函数。
C.析构函数可以重载D.析构函数可以定义为虚函数。
9.下面叙述错误的是(DA)。
//疑有错
A.基类的protected成员在派生类中仍然是protected的//继承方式不明确
B.基类的protected成员在public派生类中仍然是protected的。
C.基类的protected成员在private派生类中是private的。
D.基类的protected成员不能被派生类的对象访问。
10.如果一个类至少有一个纯虚函数,那么就称该类为(A)。
A.抽象类B.虚基类
C.派生类D.以上都不对
11.当公有继承时,基类的(D)在派生类中成为保护成员,不能通过派生类的对象来直接访问该成员。
A.任何成员B.公有成员和保护成员
C.保护成员和私有成员D.保护成员
12.当私有继承时,基类的(AB)在派生类中成为私有成员,不能通过派生类的对象来直接访问该成员//疑有错。
A.任何成员B.公有成员和保护成员
C.保护成员和私有成员D.私有成员
13.派生类的对象对它的基类成员中(A)是可以采用对象·或者对象指针->的方式访问的。
A.公有继承的公有成员B.公有继承的私有成员
C.公有继承的保护成员D.私有继承的公有成员
14.关于纯虚函数和抽象类的描述中,错误的是(AC)。
//疑有错,A选项有争议,C选项必错
A.纯虚函数是一种特殊的虚函数,它没有具体的实现。
//在派生类中有实现
B.抽象类是指具有纯虚函数的类。
C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类。
//抽像类的派生类没有重新说明纯虚函数,派生类仍是抽象类P212(3)
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。
15.下列说法错误的是(C)。
A.若语言只支持类而不支持多态,则不能称为面向对象的。
B.在运行时根据其类型确定调用哪个函数的能力叫多态性。
C.静态多态性也是在运行时根据其类型确定调用哪个函数。
//编译时
D.C++中的静态多态性是通过函数重载进行实现的。
16.(D)不是构造函数的特征
A.构造函数的函数名与类名相同。
B.构造函数可以重载。
C.构造函数可以设置缺省参数。
D.构造函数必须指定类型说明。
17.下列标识符中,A不是C++的关键字;
A.cinB.privateC.thisD.operator
18.下列标识符中,A不是C++的关键字;
A.coutB.virtualC.thisD.template
18.下列标识符中,A不是C++的关键字;
A.coutB.publicC.thisD.sizeof
19.下列标识符中,A不是C++的关键字;
A.coutB.deleteC.thisD.sizeof
20.下列标识符中,A不是C++的关键字;
A.coutB.newC.thisD.void
21.引用是一个变量的别名,下列关于的引用的描述,正确的是(BA)。
//疑有错
A.引用的值与被引用变量的值相等,内存地址相同;//P38有说明,PPT.CPP1有实例
B.引用的值与被引用变量的值相等,内存地址不相同;
C.引用的值与被引用变量的值不等,内存地址相同;
D.引用的值与被引用变量的值不等,内存地址不同;
22.公有继承时,子类的访问接口由(B)组成:
//此题有疑问,子类访问接口一词不解§
A.父类的非私有成员和子类的非私有成员;
B.父类的公有成员和子类的非私有成员;
C.父类的非私有成员和子类的公有成员;
D.父类的公有成员和子类的公有成员;
23.公有继承时,子类对象只可访问父类中的(B)和子类自己的公有成员。
A.非私有成员;B.公有成员;C.私有成员;D.保护成员;
24.公有继承时,子类成员函数不可以直接访问父类中(C)。
A.非私有成员;B.公有成员;C.私有成员;D.保护成员;
25.公有继承时,子类对象和子类成员函数必须通过父类(A)的成员函数访问父类私有成员。
A.非私有;B.非公有;C.静态;D.私有;
26.下列关于虚函数的描述,正确的是(C)。
A.静态成员函数可以是虚函数;
B.构造函数可以是虚函数;
C.析构函数可以是虚函数;
D.内联函数可以是虚函数;
27.下列关于虚函数的描述,正确的是(B)。
A.静态成员函数可以是虚函数;
B.构造函数不可以是虚函数;
C.析构函数不可以是虚函数;
D.内联函数可以是虚函数;
28.下列关于虚函数的描述,错误的是(B)。
A.静态成员函数不可以是虚函数;
B.构造函数可以是虚函数;
C.析构函数可以是虚函数;
D.内联函数不可以是虚函数;
29.下列关于虚函数的描述,错误的是(C)。
A.静态成员函数不可以是虚函数;
B.构造函数不可以是虚函数;
C.析构函数不可以是虚函数;
D.内联函数不可以是虚函数;
填空题
1.在C++程序中,使用基本输入输出流需要包含的头文件是iostream.h。
2.具有相同函数名但具有不同参数表的函数称为重载。
3.在一个函数的定义或声明前加上关键字inline时,该函数就声明为内联函数。
4.当一个类对象的成员函数被调用时,该成员函数的this指针指向调用它的对象。
5.在撤销类的对象时,C++程序将自动调用该对象的析构函数。
6.对类中的成员函数和属性的访问是通过prviate、protect和public这3个关键字来控制的。
7.当用public继承从基类派生一个类时,基类的public成员成为派生类的_public____成员,protected成员成为派生类的__protected_成员。
8.有如下定义语句:
MyClass p[10],*q;则系统自动调用该类构造函数1110次。
当类对象数组p离开它的作用域时,系统自动调用该类析构函数110次。
//疑原答案错误验证程序如下
#include"iostream.h"
classmyclass
{
public:
myclass(){cout<<"CONSTRUCT"< myclass(intn) {cout<<"construct"< ~myclass() {cout<<"destruct"< }; intmain() { myclassp[4],*q; //q=p; //myclassexam[4]={1,2,3,4}; //myclassob,*p; return0; } 9.在类定义中,将“=0’’置于虚函数的函数原型的末尾可以将该函数声明为纯虚函数。 10.带有纯虚数的类称为抽象类,它只能作为派生类对象基类来使用。 //原答案错误 11.假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为~MyClassMyclass: : ~Myclass(){}。 //此为课本中所给形式 12.有如下定义语句: MyClass *p;,则执行 p=new MyClass; 语句时,将自动调用该类的构造函数。 执行delete p;语句时,将自动调用该类的析造函数。 13.有如下对象数组定义语句: MyClass*p[10];当对象指针数组p离开它的作用域时,系统自动调用该类析构函数1次。 //此题不得其解,个人认为不调用构造函数 14.在结构定义中,数据和成员函数默认权限是公有的。 在类定义中,数据和成员函数默认权限是私有的。 15.C++是混合性程序设计语言,既支持面向过程,又支持面向对象。 16.面向对象程序设计的三大特点: 封装、继承、多态。 17.重载函数调用时,编译器按返回类型、参数类型、参数个数、参数顺序进行匹配,重载函数至少在参数个数、参数类型、或参数顺序上有所不同。 //存疑 18.函数模板比函数重载的表达更简洁,但只有参数个数相同、函数体相同,仅 类型不同的函数才能定义模板。 19.void型指针是通用型指针,任何类型的指针值都可以赋给void类型指针,但使用时必须进行显式转换,否则出错。 20.在程序中使用运算符new申请内存,应该相应地使用运算符delete来释放申请的内存。 21.在程序中使用运算符new申请内存,应该相应地使用运算符delete来释放申请的内存。 22.JAVA是纯面向对象语言,C++是混合性程序设计语言,混合语言的特点是既支持传统的程序设计方法,又支持面向对象程序设计方法。 23.类是数据和代码的复合体。 //个人认为是数据成员和成员函数 24.类可以有多个构造函数,有一个析构函数。 25.若类中一个构造函数都没有,则C++自动提供一个无参数的默认构造函数,负责创建对象。 26.类中const数据成员和引用类型的数据成员必须在该类的对象建立的同时进行初始化,这种初始化只能用成员初始化列表进行。 //未寻到根据 27.在类中使用static声明的成员称为静态成员。 28.静态成员函数在类中只有语法上的作用,它不是对象的成员,没有this指针,必须将对象作为参数传入,才能在静态成员函数访问该对象的成员。 29.友元函数是对设计类时未定义完整操作集的补充,是类外的函数,它不是对象的成员函数,没有this指针,必须将对象作为参数传入。 30.C程序是由一组函数组成的,C++面向对象程序是由一组类组成的。 31.面向对象的程序设计主要是类的设计,在编译时,一个面向对象的系统由类组成,在运行时,系统由对象组成。 32.单一继承形成一个倒挂的树;多重继承形成一个有向无环图。 33.当类中包含虚拟函数时,C++编译器为类加上一个虚函数指针,该指针指向虚拟函数表。 34.当类中包含虚拟函数时,C++编译器为类加上一个虚函数指针,该指针指向虚拟函数表。 35.包含虚拟函数的类通过vptr指针和虚拟函数表可以在程序运行时依据指针实际指向的对象调用对应的虚拟函数,从而实现多态,达到动态绑定的目的。 36.派生类的对象可以赋给基类的对象;由于基类对象不具有派生类对象所具有的成员,因此基类的对象不可以赋值给派生类对象。 37.运算符重载的实质就是函数重载。 通过运算符重载可以使应用于基本数据类型的运算符作用于用户自定义数据类型。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+习题 答案 C+ 习题