面向对象C++填空题.docx
- 文档编号:27793624
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:20
- 大小:24.46KB
面向对象C++填空题.docx
《面向对象C++填空题.docx》由会员分享,可在线阅读,更多相关《面向对象C++填空题.docx(20页珍藏版)》请在冰豆网上搜索。
面向对象C++填空题
1.C++的流库预定义了4个流,它们是cin、cout、clog和__cerr_。
2.每个对象都是所属类的一个_实例
3.在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语
句int*ip=newint[10];
4.函数模板中紧随template之后尖括号的类型参数都要冠以保留字__class_。
5.表达式cout< 6.在C++中,访问一个指针所指向的对象的成员所用的指向运算符是->。 7.假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个对象时,可以调 用复制或拷贝构造函数来完成此功能。 8.对赋值运算符进行重载时,应声明为类成员函数。 9.如果要把A类成员函数f()且返回值为void声明为类B的友元函数,则应在类B的定义中加 入的语句___。 答案: friendvoidA: : f(); [解析]成员函数作为另一个类的友元函数,格式为: friend返回类型类名: : 函数(形参)。 10.控制格式输入输出的操作中,函数___是用来设置填充字符。 要求给出函数名和参数类型 答案: setfill(char) [解析]格式控制方法的使用,如setw,setfill等等。 11.C++语言支持的两种多态性分别是编译时的多态性和___的多态性。 答案: 运行时 [解析]多态性包括静态的(编译时)多态性和动态的(运行时)多态性。 12. 13.定义类动态对象数组时,元素只能靠自动调用该类的___来进行初始化。 答案: 无参构造函数 [解析]使用new创建动态对象数组,不能有参数,所以只能调用无参的构造函数,初始化对象 15.一个抽象类的派生类可以实例化的必要条件是实现了所有的___。 答案: 纯虚函数的定义 [解析]抽象类只因有纯虚函数,所以不能被实例化,所以派生类要实例化必须对纯虚函数进行 定义。 17.在用C++进行程序设计时,最好用___代替malloc。 答案: new [解析]new与delete是C++语言特有的运算符,用于动态分配和释放存。 new用于为各种数据 类型分配存,并把分配到的存首地址赋给相应的指针。 new的功能类似于malloc()函数。 使用new的格式为: <指针变量>new<数据类型>; 其中,<数据类型>可以是基本数据类型,也可以是由基本类型派生出来的类型;<指针变量>取得 分配到的存首地址。 new有3种使用形式。 (1)给单个对象申请分配存 int*ip;ip=newint;//ip指向1个未初始化的int型对象 (2)给单个对象申请分配存的同时初始化该对象 int*ip;ip=newint(68);//ip指向1个表示为68的int型对象 (3)同时给多个对象申请分配存 int*ip;ip=newint[5];//ip指向5个未初始化的int型对象的首地址 for(inti=0;i<5;i++)ip[i]=5*i+1;//给ip指向的5个对象赋值 用new申请分配存时,不一定能申请成功。 若申请失败,则返回NULL,即空指针。 因此,在程 序中可以通过判断new的返回值是否为0来获知系统中是否有足够的空间供用户使用。 20.基类的公有成员在派生类中的访问权限由___决定。 答案: 访问控制方式或继承方式 21.不同对象可以调用相同名称的函数,但执行完全不同行为的现象称为___。 答案: 多态性 [解析]多态性的概念。 虚函数是实现多态的基础,运行过程中的多态需要同时满足3个条件 : (1)类之间应满足子类型关系。 (2)必须要有声明的虚函数。 (3)调用虚函数操作的是指向对象 的指针或者对象引用;或者是由成员函数调用虚函数(如果是在构造函数或析构函数中调用虚函 数,则采用静态联编)。 22.this指针始终指向调用成员函数的___。 答案: 对象 this指针是隐藏的指针,它指向调用函数的对象。 23.类模板用来表达具有___的模板类对象集。 答案: 相同处理方法 [解析]模板特点是不同的数据具有相同的处理方法的抽象。 24.C++程序的源文件扩展名为___。 答案: cpp [解析]源程序*.cpp,目标文件为*.obj,可执行程序*.exe。 25.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是___的头文件。 答案: 自定义 [解析]#include装入文件有两种方式<>和“”,一是系统的,一是自定义文件。 26.语句序列 ifstreaminfile; infile.open(“data.dat”); 的功能可用一个语句实现,这个语句是___。 答案: ifstreaminfile(“data.dat”); [解析]voidifstream: : open(constchar*fname,intmode=ios: : in,int access=filebuf: : openprot); ifstream: : ifstream(constchar*fname,intmode=ios: : in,intaccess=filebuf: : openprot); 其中,第一个参数是用来传递文件名的;第二个参数mode的值决定文件将如何被打开;第三个参 数access的值决定文件的访问方式,一般取缺省值filebuf: : openprot,表示是普通文件。 mode的取值如下: (1)ios: : in: 打开一个文件进行读操作,而且该文件必须已经存在 ; (2)ios: : nocreate: 不建立新的文件。 当文件不存在时,导致open()失败 ;(3)ios: : noreplace: 不修改原来已经存在的文件。 若文件已经存在,导致open()失败 ;(4)ios: : binary: 文件以二进制方式打开,缺省时为文本文件。 27.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句___。 答案: friendvoidB: : fun(); [解析]声明成员函数作为另外一个类的友元函数时,使用类作用域运算符: : 。 28.单目运算符作为类成员函数重载时,形参个数为___个。 答案: 0 [解析]单目运算符使用成员函数重载可以不用形参,双目运算符使用一个参数。 29.执行以下程序 doublea=3.1415926,b=3.14; cout< 程序的输出结果是___。 答案: 3.1416,3.14 [解析]题目设置精度即有效数字都是5,a四舍五入是3.1416,b是3.14。 30.重载的运算符保持其原有的___、优先级和结合性不变。 答案: 操作数 [解析]运算符重载时要遵循以下规则: (1)除了类属关系运算符“.”、成员指针运算符“.*”、作用域运算符“: : ”、sizeof运算符 和三目运算符“? : ”以外,C++中的所有运算符都可以重载。 (2)重载运算符限制在C++语言中已有的运算符围的允许重载的运算符之中,不能创建新的 运算符。 (3)重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数与 语法结构。 31.编译时的多态性通过___函数实现。 答案: 重载 [解析]编译多态性,实现的方法主要通过函数的重载或运算符的重载。 32.假设类X的对象x是类Y的成员对象,则“YObj”语句执行时,先调用类___的构造函数。 答案: X [解析]派生类中的构造函数的执行顺序,先基类后派生类。 33.以下程序段的输出结果是___。 cout.setf(ios: : showpos); cout<<509.3< 答案: +509.3 [解析]输入、输出格式ios: : showpos用于输出数据的符号位。 34.C++中ostream的直接基类___。 答案: ios [解析]istream和ostream的直接基类是ios。 35.C++中有两种继承: 单继承和___。 答案: 多重继承 [解析]单继承和多重继承,多重继承即有多个基类。 36.若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的___语句。 答案: 声明 [解析]函数使用有两部分: 声明和定义。 定义在前,可以无声明;但函数定义在后,调用在前 的话,需要先声明函数的原型。 37.将指向对象的引用作为函数的形参,形参是对象的引用,实参是___。 答案: 对象名 [解析]实参与形参类型要一致,形参是对象的引用,实参应该是对象名。 38.控制格式输入输出的操作中,函数___是设置域宽的。 要求给出函数名和参数类型)。 答案: setw(int) [解析]setw(intn): 用来设置n输出宽度。 39.派生类的成员一般分为两部分,一部分是___,另一部分是自己定义的新成员。 答案: 从基类继承的成员 [解析]派生类成员一个来自继承基类成员,一个来自本身增加的成员。 40.执行以下代码 inti=230; cout<<"i="< 程序的输出结果为___。 答案: i=e6 [解析]流类库中使用格式符,输出十六进制数据。 41.使用new为int数组动态分配10个存储空间是___。 答案: newint[10]; [解析]newdelete动态开辟空间和删除空间。 newint[10],注意不要写成new int(10),使用小括号只能开辟一个空间,使用10来初始化该值。 42.面向对象的四个基本特性是多态性、继承性、和封装性___。 答案: 抽象 [解析]考察面向对象的四个特征。 程序由一组抽象的对象组成,一组对象的共同特征抽象出类 的概念,类是对象的抽象,对象是类的实例。 封装即将数据和操作紧密结合提供访问的接口,外 部通过接口实现访问数据,提供安全性。 继承继承解决了类的扩展性。 多态性不同对象调用相同 的函数名,但调用不同的函数,实现不同的功能,解决了接口统一的问题。 43.定义虚函数所用的关键字是___。 答案: virtual [解析]在成员函数前加virtual修饰的函数就是虚函数。 但不是所有成员函数都可以定义为虚 函数的。 比如构造函数,不能定义虚函数。 44.执行以下代码 cout<<“oct: ”< 程序的输出结果是___。 答案: Oct: 42 [解析]oct表示八进制,hex表示十六进制,但它们只能输出整型的数据。 45.在C++中要创建一个文件输入流对象fin,同时该对象打开文件“Test.txt”用于输入,则 正确的声明语句是___。 答案: ifstreamfin(“Test.txt”); [解析]文件操作中ifstream用于文件的输入,可以调用它的构造函数与要打开的文件进行关联 46.如果一个派生类只有一个唯一的基类,则这样的继承关系称为___。 答案: 单继承 [解析]根据派生类所拥有的基类数目不同,可以分为单继承和多重继承。 一个类只有一个直接基 类时,称为单继承;而一个类同时有多个直接基类时,则称为多重继承。 基类与派生类之间的关系如下: (1)基类是对派生类的抽象,派生类是对基类的具体化,是基类定义的延续。 (2)派生类是基类的组合。 多重继承可以看作是多个单继承的简单组合。 (3)公有派生类的对象可以作为基类的对象处理。 47.复制构造函数使用___作为形式参数。 答案: 对象的引用 [解析]复制构造函数使用对象的引用来初始化一个新对象,避免临时产生对象。 48.通过C++语言中的___机制,可以从现存类中构建其子类。 答案: 继承 [解析]继承概念,从现有的类生成新类,原有的类称为父类或基类,新类又称子类或派生类或 衍生类,它是对基类的扩充。 49.在下面的类定义中,私有成员有___。 classLocation {intX,Y; protected: intzeroX,zerxY; intSetZero(intzeroX,intzeroY); private: intlength,height; public: voidinit(intinitX,intinitY); intGetX(); intGetY(); }; 答案: X,Y,length,height 50.C++中语句constchar*constp=“hello”;所定义的指针p和它所指的容都不能被 ___。 答案: 修改 [解析]使用const修改的容不能修改,这里同时修饰地址和值,表示地址和值都不变。 52.C++是通过引用运算符___来定义一个引用的。 答案: & [解析]引用是C不具有使用方法,它表示变量的别名,在函数中使用很频繁,因为调用形式同 传值调用,但修改形参实参也会相应改变的特征。 53.如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是___。 答案: )constdoublePI(3.14159);或者constdoublePI=3.14159; [解析]使用const声明符号常量,常量和常量值可以用括号也可以赋值号。 54.在C++四个流对象中,___用于标准屏幕输出。 答案: cout [解析]cin、cout、cerr和clog中cin用于输入,cout用于输出,cerr、clog错误处理。 55.执行以下代码 inta=32; doublec=32; cout.setf(ios: : hex); cout<<"hex:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 C+ 填空