面向对象的程序设计.doc_第1页
面向对象的程序设计.doc_第2页
面向对象的程序设计.doc_第3页
面向对象的程序设计.doc_第4页
面向对象的程序设计.doc_第5页
免费预览已结束,剩余16页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一题、单项选择题(每题1分,5道题共5分)1、已知类 A 是类 B 的友元,类 B 是类 C 的友元,下面说法正确的是 ( )A、类 A 一定是类 C 的友元B、类 C 一定是类 A 的友元C、类 C 的成员函数可以访问类 B 的对象的任何成员D、类 A 的成员函数可以访问类 B 的对象的任何成员2、一个类的友元不是该类的成员,与该类的关系密切,所以它( )。A、有this指针,有默认操作的对象B、没有this指针,可以有默认操作的对象C、有this指针,不能执行默认操作D、没有this指针,也就没有默认操作的对象3、引入友元的主要目的是为了( )。A、增强数据安全性B、提高程序的可靠性C、提高程序的效率和灵活性D、保证类的封装性4、下面的语句能将函数void A() 定义为类B的友元函数的是( )A、class B friend void A();B、class B static friend void A();C、class B friend static void A();D、class B frined A();5、下面的语句中能将类B 定义为类A的友元类的是( )A、friend class B;B、class A friend B;C、class A friend class B;D、class friend B class A;第二题、多项选择题(每题2分,5道题共10分)1、一个类的友元不是该类的成员,与该类的关系密切,所以下面它的说法错误的是( )。A、有this指针,有默认操作的对象B、没有this指针,可以有默认操作的对象C、有this指针,不能执行默认操作D、没有this指针,也就没有默认操作的对象2、定义类B的构造函数为类A的友元函数的语句是( )A、class A friend B();B、class A friend B:B();C、class A friend void B:B();D、class A friend double B:B();3、关于友元函数的说法正确的是( )A、友元函数可以是普通函数,可以是其他类的成员函数,也可以是本类的成员函数B、友元函数可以访问多个类的私有成员和保护成员C、在调用友元函数的时候需要使用“.”运算符D、如果友元函数是某个类的成员函数,在定义这个友元函数的时候要使用类前缀。4、若B类为A类的友元类,则下面的说法错误的是( )A、B类的所有成员函数都是A类的友元函数B、B类指定的成员函数才是A类的友元C、A类的所有成员函数可以访问B类的成员D、B类的私有成员函数不能可以访问A类的私有成员5、关于友元的说法正确的是( )A、如果函数f是类A的友元函数,那么函数f的所有重载函数都是类A的友元函数B、如果函数f是类A的友元函数,那么f可以访问类A的所有成员C、如果函数f是类A的友元函数,那么函数f不可以声明为静态成员函数D、如果函数f是类A的友元函数,那么f可以调用A的构造函数第三题、判断题(每题1分,5道题共5分)1、友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。正确错误2、友元类的所有成员函数都可以访问相应类的成员。正确错误3、C允许使用友元,但是友元会破坏封装性。正确错误4、友元类是使用friend关键字声明的类,它的所有成员函数都是相应类的友元函数。正确错误5、一个函数可以是多个类的友元函数。正确错误1、双目运算符重载为普通函数时,其参数表中应带有( )个参数。A、0B、1C、2D、32、如果表达式a+中的“+”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为( )。A、a.operator+()B、operator+(a)C、operator+(a,1)D、operator+(1,a)3、双目运算符的调用格式是( )A、双目运算符 左运算对象 右运算对象B、双目运算符 右运算对象 左运算对象C、左运算对象 双目运算符 右运算对象D、右运算对象 双目运算符 左运算对象4、假定M是一个类名,且M中重载了操作符,可以实现M对象间的连续赋值,如“m1m2m3;”。重载操作符的函数原型最好是( )。A、int operaotor(M);B、int operator(M&);C、M operator(M&);D、M& operator(M);5、下面是重载单目运算符-的成员函数原形,其中最符合-原来含义的是( )。A、Value Value:operator-(Value);B、Value Value:operator-(int);C、Value& Value:operator-(Value);D、Value& Value:operator-(Value&);单选第二题、多项选择题(每题2分,5道题共10分)1、在重载一运算符时,若运算符函数的形参表中没有参数,则可能的情况是( )。A、该运算符是一个单目运算符。B、该运算符函数有一个隐含的参数this。C、该运算符函数是类的成员函数。D、该运算符函数是类的友元函数。2、下面运算符不能重载的是( )A、B、:C、.D、,3、重载delete运算符的格式错误的是( )A、void * operator delete(void*);B、void * operator delete(void*,参数表);C、void * operator delete(参数表);D、void * operator delete();4、下面关于逗号运算符的说法正确的是( )A、逗号运算符是多目运算符B、逗号运算符的表达式为“左运算数,右运算数”,返回值为右运算数的值。C、逗号运算符可以重载为成员函数,形参只带右运算数。D、逗号运算符的返回值为左运算数的值。5、下面关于函数调用运算符正确的说法是( )A、重载函数调用运算符只能说明为类的非静态成员函数B、重载了的函数调用运算符可以带多个形参,也可以带缺省参数C、重载函数调用运算符的作用与重载函数的作用相同D、重载函数的一般格式为: 类名:operator();第三题、判断题(每题1分,5道题共5分)1、单目运算符-只能被重载为成员函数。正确错误2、双目运算符op重载为A类的成员函数后,表达式“ obj1 op obj2”可以解释为:operator op(obj1,obj2)。正确错误3、双目运算符op重载为A类的友元函数后,表达式“ obj1 op obj2”可以解释为:operator op(obj1,obj2)。正确错误4、重载运算符没有实际意义,因为系统会为每一个类自动生成赋值运算符。正确错误5、下标运算符重载函数只能作为类的成员函数,不能作为类的友元函数。正确错误第一题、单项选择题(每题1分,5道题共5分)1、下面函数模板定义中不正确的是( )A、templateclass QB、templateclass Q Q F(Q x) return Q+x; return x+x; C、templateclass TD、templateclass T T F(T x)return x*x; return x1; 2、关于函数模板的说法错误的是( )A、函数模板是一个模板,其中用到通用类型参数B、函数模板是具体的函数,在系统遇到具体函数调用时生成C、函数模板是一组函数的抽象D、函数模板不能执行3、关于模板之间的关系说法正确的是( )A、C+中有函数模板和类模板B、函数模板是模板函数的实例化C、类模板是模板类的实例化D、对象是类模板的实例化4、下面函数模板的声明正确的是( )A、template void fun(int x)B、template class T void fun(int x)C、template class T void fun(T x)D、template class T void fun(class T x)5、下面关于函数调用的顺序说法正确的是( )A、函数调用时首先匹配参数完全相同的函数B、函数调用时首先寻找匹配的函数模板C、函数调用时如果没有找到对应的函数模板生成模板函数就查找参数相同的函数D、函数调用时如果函数模板和函数都没有对应的,函数调用错误第二题、多项选择题(每题2分,5道题共10分)1、关于模板函数的说法正确的是( )A、模板函数不能直接执行B、模板函数是一组函数的抽象C、模板函数的编译系统遇到函数调用时生成的D、模板函数是重载函数2、关于类模板的说法正确的是( )A、类模板是类的抽象B、类模板是模板类的抽象C、类模板中用到通用类型参数D、类模板和普通类一样可以用于定义对象3、已经有函数模板定义 template class T T fun(T x, T y) return (xy) ? x: y; 下面的函数调用正确的是( )A、fun(5,6)B、fun(5, 2.0)C、fun(a, c)D、fun(a, 4)4、关于函数模板的实例化正确的说法是( )A、模板函数在实例化之前要先声明B、模板类型可以进行隐式的类型转化C、模板函数是函数模板的特例D、函数模板实例化生成的函数模板是重载函数5、下面关于函数调用的顺序说法错误的是( )A、函数调用时首先匹配参数完全相同的函数B、函数调用时首先寻找匹配的函数模板C、函数调用时如果没有找到对应的函数模板生成模板函数就查找参数相同的函数D、函数调用时如果函数模板和函数都没有对应的,函数调用错误第三题、判断题(每题1分,5道题共5分)1、函数模板中的每一个类型参数在函数参数表中必须至少使用一次。正确错误2、模板类型参数名可以用来指定函数模板的返回类型。正确错误3、函数模板每个模板类型参数前面都必须用关键字class或typename修饰。正确错误4、函数模板是个模板,用来生成函数。模板函数是个函数,由函数模板生成。正确错误5、类模板的无类型参数可以是数组或指针。正确错误1、派生类的对象只能对它的( )是可访问的。A、公有继承的公有成员B、公有继承的私有成员C、公有继承的保护成员D、私有继承的保护成员2、在私有继承的情况下,基类成员在派生类中的访问权限( )A、受限制B、保持不变C、受保护D、不受保护3、继承机制的作用是 ( )A、信息隐藏B、数据封装C、定义新类D、数据抽象4、从一个基类派生出的各个类的对象之间( )。A、共享所有数据成员,每个对象还包含基类的所有属性B、共享部分数据成员,每个对象还包含基类的所有属性C、不共享任何数据成员,但每个对象还包含基类的所有属性D、共享部分数据成员和函数成员5、C+的继承性允许派生类继承基类的( )。A、部分特性,并允许增加新的特性或重定义基类的特性B、部分特性,但不允许增加新的特性或重定义基类的特性C、所有特性,并允许增加新的特性或重定义基类的特性D、所有特性,但不允许增加新的特性或重定义基类的特性第二题、多项选择题(每题2分,5道题共10分)1、如果是类B在类A的基础上构造,那么,就称( )。A、类A为基类或父类,类B为超类或子类B、类A为基类、父类或超类,类B为派生类或子类C、类A为派生类,类B为基类D、类A为派生类或子类,类B为基类、父类或超类2、对于公有继承,基类中的私有成员在派生类中将 ( )。A、不能够直接使用成员名访问B、能够通过成员运算符访问C、仍然是基类的私有成员D、变为派生类的私有成员3、下列对派生类的描述中正确的说法是:( )。A、派生类至少有一个基类B、派生类可作为另一个派生类的基类C、派生类除了包含它直接定义的成员外,还包含其基类的成员D、派生类所继承的基类成员的访问权限保持不变4、含有虚基类的派生类的构造函数调用次序错误的是( )A、虚基类,基类,派生类, 对象成员B、基类,派生类,对象成员,虚基类C、对象成员,基类,虚基类,派生类D、基类,虚基类,对象成员,派生类5、下面说法正确的是( )A、派生类指针可以直接指向基类对象B、派生类指针可以强制转换为基类指针C、派生类成员可以通过基类指针引用D、基类指针可以指向派生类中对象第三题、判断题(每题1分,5道题共5分)1、基类的保护成员在私有派生类中是私有成员。正确错误2、基类的保护成员不能被派生类的对象访问。正确错误3、公有继承时基类中的protected成员在派生类中仍是protected的。正确错误4、构造函数可以被继承。正确错误5、多继承情况下,派生类的构造函数的执行顺序取决于定义派生时所指定的各基类的顺序。正确错误第一题、单项选择题(每题1分,5道题共5分)1、cout是I0流库预定义的:A、类B、对象C、包含文件D、常量2、在进行完任何C+流的操作后,都可以用C+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是( )A、failB、eofC、badD、good3、在C+程序中使用的cin标识符是系统类库中定义的( )类中的一个对象。A、istreamB、ostreamC、iostreamD、fstream4、相对于文本文件,下列关于二进制文件的说法中,不正确的是(D)A、占用空间小B、无法用常规的编辑工具看懂C、执行效率高D、可移植性好5、fixed是输出格式中用到的状态标志,下列说法中,正确的是( )A、以浮点格式显示浮点数值B、以定点格式显示浮点数值(没有指数部分)C、以定点格式显示浮点数值(有指数部分)D、以上说法都不正确第二题、多项选择题(每题2分,5道题共10分)1、对于输出流来说,用于文件位置定位的成员函数有( ):A、ostream& ostream:seekg(streampos);B、oistream& istream:seekg(streamoff,ios:seekdir);C、ostreampos istream:tellg();D、ostream& ostream:seekp(streampos);2、下面的说法正确的是( )A、输入输出流是指变量或者对象与外设之间的输入输出操作。B、实现输入输出操作的cin和cout是C+的语句C、流是用流类定义的对象,而流类是用于完成输入输出的类。D、流是IO设备3、c+提供的两种类型的流是( )A、字符流B、字节流C、文本流D、二进制流4、下面说法正确的是( )A、ios是所有流类的基类B、iostream是istream类和ostream类的公有派生类C、ifstream类是istream类的基类D、fstream类是ifstream类的派生类5、下面关于cin的说法正确的是( )A、cin是与标准设备链接的预定义输入流B、运算符向cin发送字符C、提取运算符读取键盘输入的所有字符,包括空格D、一个语句中可以使用多个提取运算符第三题、判断题(每题1分,5道题共5分)1、使用提取符()可以输出各种类型的变量的值,也可以输出指针值.正确错误2、二进制流将字节流的每个字节以二进制方式解释,它在数据传输时不作任何转换,故效率高,可移植性好。正确错误3、文件是指存储在存储器的数据的集合。计算机中的程序、数据、文档通常以文件方式存放。正确错误4、系统在主存中开辟的、用来临时存放输入输出数据的区域,叫做输入输出缓冲区(简称缓冲区)。正确错误5、ostrstream是向字符数组的输出流,istrstream是从字符数组的输入流正确错误1、通过 ( ) 调用虚函数时,采用动态束定。A、对象指针B、对象名C、成员名限定D、派生类名2、类 B 是类 A 的公有派生类,类 A 和类 B 中都定义了虚函数 func(),p 是一个指向类 A 对象的指针,则 p-A:func() 将 ( )A、调用类 A 中的函数 func()B、调用类 B 中的函数 func()C、根据 p 所指的对象类型而确定调用类 A 中或类 B 中的函数 func()D、既调用类 A 中函数,也调用类 B 中的函数3、对于类定义 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 func 2 END1;  ; 下面正确的叙述是 ( )A、A:func2( ) 和 B:func1( ) 都是虚函数B、A:func2( ) 和 B:func1( ) 都不是虚函数C、B:func1( ) 是虚函数,而 A:func2( ) 不是虚函数D、B:func1( ) 不是虚函数,而 A:func2( ) 是虚函数4、要实现动态联编必须( )A、通过成员名限定来调用虚函数B、通过对象名来调用虚函数C、通过派生类对象来调用虚函数D、通过对象指针或引用来调用虚函数5、类A 中定义了虚函数f,类C是类A的派生类,类C中重新定义了虚函数f。声明变量: A a,*p1; B b, *p2; 下面语句实现动态绑定的是( )A、a.f();B、b.f();C、p1&b; p1-f();D、p2&b; p2-f();第二题、多项选择题(每题2分,5道题共10分)1、下面属于多态性的是( )A、函数重载B、类模板C、函数模板D、派生类2、关于虚函数的说法正确的是( )A、虚函数只能是成员函数B、静态成员函数不能是虚函数C、虚函数不能是内联函数D、析构函数不能是虚函数3、下面的说法正确的是( )A、抽象类只能做基类B、抽象类是继承层次中的根C、抽象类用abstract定义D、抽象类中至少有一个虚函数4、下列关于虚函数与函数重载区别的叙述中正确的是( )A、函数说明形式上不同B、函数重载允许是非成员函数,虚函数只能是成员函数C、函数重载的调用依据参数和类型的差别,虚函数则依据对象D、函数重载的本体可以在类外定义,虚函数不可以5、当一个类的某个函数被说明为 virtual 时,下面说法错误的是( )A、该函数在该类的所有派生类中都是虚函数B、该函数在该类的所有派生类中只有被重新说明时才是虚函数C、该函数在该类的所有派生类中只有被重新说明为 virtual 时才是虚函数D、该函数在该类的所有派生类中都不是虚函数第三题、判断题(每题1分,5道题共5分)1、相比较而言,静态绑定的执行速度要比动态绑定的执行速度快。正确错误2、动态联编是在运行时选定调用的成员函数的。正确错误3、纯虚函数是一种特殊的虚函数,它没有具体的实现正确错误4、一个基类说明有纯虚函数,该基类的派生类一定不再是抽象类;正确错误5、抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。正确错误第一题、单项选择题(每题1分,5道题共5分)1、throw后面的表达式不可以是( )A、常量B、变量C、对象D、数组2、下面哪些情况不会造成异常( )A、内存耗尽B、再次打开文件C、除数为0D、数组越界访问3、关于异常的处理过程,正确的说法是( )A、在可能会出现错误的地方,用catch捕捉B、在可能会出现错误的地方,用throw抛出异常C、catch块可以捕捉所有异常D、只有与catch()参数匹配的异常才可以捕捉4、如果异常没有列入异常规范,在C+中将( )A、忽略它B、程序中止C、系统调用unexpected()终止程序D、询问用户5、关于没有被捕捉的异常正确的说法是( )A、在catch块中没有处理的异常B、未被捕捉的异常必然导致系统崩溃C、如果一个异常没有被捕捉到,将调用terminate()函数终止程序运行D、忽略它第二题、多项选择题(每题2分,5道题共10分)1、处理程序中可预料的错误的方法有( )A、根据函数返回值进行判断处理B、出现错误转向专门的错误处理程序C、异常处理D、没有办法2、异常处理的优点是( )A、提高程序可读性B、程序的控制不会因产生异常而随意跳转C、正常处理代码和异常处理代码隐式分离D、与函数调用返回的控制方法一致3、关于异常处理的说法正确的是()A、将异常的检测与处理分离B、异常就是错误C、异常由函数调用引起D、在上层调用函数中使用try检测函数调用是否引发异常4、下面的说法正确的是()A、引发异常用关键字throwB、在被调用函数中检测到异常条件用throw都可以引发异常C、被调用函数只有在try块中用throw才可以引发异常D、检测到的异常由catch捕获并处理5、try子句的作用是( )A、代码的保护段B、如果预料某段程序代码可能发生异常,就将该段代码放在try子句之后C、try子句产生异常D、try子句中的throw表达式产生异常第三题、判断题(每题1分,5道题共5分)1、抛出异常的模块只是报告某个地方存在错误,这个报告可以帮助异常处理器解决这个错误。正确错误2、异常信号传递方式有三种:传值方式、引用方式和指针方式。正确错误3、throw( )表示函数不会抛出任何类型的异常正确错误4、如果没有异常规范表示函数不会抛出任何类型的异常。正确错误5、catch处理程序的出现次序无关紧要。正确错误第一题、单项选择题(每题1分,5道题共5分)1、STL中能够保存其他类型的对象的类是( )A、容器B、迭代器C、算法D、数组2、STL中算法访问容器的中介是( )A、容器B、迭代器C、算法D、数组3、允许程序员以相同的方式处理不同的数据结构的是( )A、容器B、迭代器C、算法D、数组4、向量(vector)属于( )A、顺序容器B、关联容器C、前向容器D、双向容器5、映射(map)属于( )A、顺序容器B、关联容器C、前向容器D、双向容器第二题、多项选择题(每题2分,5道题共10分)1、从广义上讲,STL的代码分为三类,它们分别是( )A、容器B、迭代器C、算法D、模板2、下面是算法完成的工作的是( )A、计算B、画流程图C、操作容器对象D、堆栈操作3、下面的说法正确的是( )A、容器用于存放数据对象B、算法用于操作容器中的数据对象C、迭代器是容器的代替D、迭代器用于链接容器和算法4、下面关于迭代器的说法正确的是( )A、迭代器在STL中起关联作用,类似指针B、迭代器在STL中定义,程序员不能自己定义C、迭代器是一个对象在对应的容器上遍历D、迭代器一般不单独使用5、如果char str“China!Great Wall”,生成string类型s并且s的字符串内容也是“China!Great Wall”的语句是( )A、string s(str);B、string s(str,1);C、string s(str, 1,11);D、string sstr;第三题、判断题(每题1分,5道题

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论