c++期末考试判断题+填空题_第1页
c++期末考试判断题+填空题_第2页
c++期末考试判断题+填空题_第3页
c++期末考试判断题+填空题_第4页
c++期末考试判断题+填空题_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上判断题1、对空指针不能用delete运算符。(错误) 2、对重载的函数,要求函数类型相同但参数不同。(错误) 3、任何一个对象只能属于一个具体的类。(正确) 4、用new运算符来创建对象时不会调用构造函数。(错误) 5、对重载的函数,要求参数不同或函数类型不同。(错误) 6、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。(错误) 7、析构函数可以是虚函数。(正确) 8、无论什么方式的继承,基类的私有成员都不能被派生类访问。(正确) 9、要达到动态联编的效果,基类和派生类的对应函数不仅名字相同,而且返回类型、参数个数和类型也必须相同。(正确) 10、如果

2、派生类没有实现虚函数,那么它将使用他的基类的虚函数。(正确)11、构造函数可以是虚函数。(错误)12、指向对象数组的指针不一定必须指向数组的首指针。(正确)13、对象数组的元素可以是不同类的对象。(错误)14、对象数组可以赋初值又可以赋值。(错误)15、一个类的构造函数可以不包含对其子对象的初始化。(错误)16、在C+中,既允许单继承,又允许多继承。(正确)17、派生类从基类派生出来,它不能生成新的派生类。(错误)18、派生类的继承方式只有2种:公有继承和私有继承。(错误)19、在公有继承中,基类的成员在派生类中都可以直接使用。(错误)20、在单继承中,派生类中对基类成员的访问也会出现二义性。

3、(错误)21、解决多继承下二义性问题的方法之一是使用作用域运算符。(正确)22、作用域运算符(:)只能用来限定成员函数所属的类。(错误)注:还限制成员变量所属的类。23、析构函数是一种函数体为空的成员函数。(错误)24、构造函数和析构函数都不能重载。(错误)注:构造函数可以重载,析构函数不可以重载(因为析构函数无参数,不可能进行参数区分)。25、说明或定义对象时,类名前面不需要加class关键字。(正确)26、对象成员的表示与结构变量成员表示相同,使用运算符或->。(正确)27.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。(错误)注:

4、私有成员还可以被友元访问。28、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。(正确)29、可以在类的构造函数中对静态数据成员进行初始化。(错误)注:静态数据成员属于类而不管是否存在该类的对象,只有创建对象才会调用构造函数,所以静态成员不应该在构造函数中初始。30、如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。(正确)注:一般情况,静态成员函数不能访问类的非静态成员;非静态成员函数可访问类任何成员。31、使用关键字class定义的类中缺省的访问权限是私有(private)的。(正确)32、已知:m是类A的对象,n是类A的公有数据成员,p是指向类A

5、中n成员的指针。下述两种表示是等价的:m.n和m.*p (正确)33、指向对象的指针与对象都可以作函数参数,但是使用前者比后者好些。(正确)34、对象引用作函数参数比用对象指针更方便些。(正确)注:不需要间接访问35、对象数组的元素可以是不同类的对象。(错误)36、对象数组既可以赋初值又可以赋值。(正确)37、指向对象数组的指针不一定必须指向数组的首元素。(正确)注:指针可以移动。38、一维对象指针数组的每个元素应该是某个类的对象的地址值。(正确) 39、const char* p说明了p是指向字符串的常量指针。(错误)注:p是指向字符串常量的指针-正确。40、一个类的构造函数中可以不包含对其

6、子对象的初始化。(正确)注:形式上可以,但本质会调用缺省构造函数对子对象进行初始化。本题有二义性。41、转换函数不是成员函数,它是用来进行强制类型转换的。(错误)42、指向对象的指针和指向类的成员的指针在表示形式上是不相同的。(正确)43、C+语言中,既允许单继承,又允许多继承。(正确)44、派生类是从基类派生出来,它不能再生成新的派生类。(错误)45、派生类的继承方式有两种:公有继承和私有继承。(错误)/还有保护继承45、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。(错误)注:基类中的公有成员和保护成员在派生类中都是可见的,基类私有成员在派生类中不可见。47、在公有继承中,

7、基类中只有公有成员对派生类对象是可见的。(正确)48、在私有继承中,基类中只有公有成员对派生类是可见的。/保护成员也可见(错误)49、在私有继承中,基类中所有成员对派生类的对象都是不可见的。(正确)注:基类成员public,protected成员都变成派生类private成员了。50、在保护继承中,对于垂直访问同于公有继承,而对于水平访问同于私有继承。(正确)51、派生类是它的基类的组合。(错误)/不仅是组合,更重要的是扩充和完善52、构造函数可以被继承。(错误)53、析构函数不能被继承。(正确)注:构造函数、析构函数都不能继承。54、子类型是不可逆的。(正确)55、只要是类M继承了类N,就可

8、以说类M是类N的子类型。(错误)/公有继承56、如果A类型是B类型的子类型,则A类型必然适应于B类型。(正确)57、多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。(正确)58、单继承情况下,派生类中对基类成员的访问也会出现二义性。(错误)59、解决多继承情况下出现的二义性的方法之一是使用成员名限定法。(正确)注:严格讲“作用域限定”。60、虚基类是用来解决多继承中公共基类在派生类中只产生一个基类子对象的问题。(错误)注:“多个”61、函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。(正确)62、重载函数可以带有缺省值参数,但是要注意二义性。(正确)

9、63、多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。(正确)64、对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。(错误)/“可以重载为非成员函数”不确切。65、对单目运算符重载为友元函数时,说明一个形参;重载为成员函数时,不能显式说明形参。(错误)注:前面描述对的。此题不全面,应该是“重载为成员函数时,除了后置+、-,不能显式说明形参。本题一般理解也可以按上面描述,此题考试不扣分。66、重载运算符保持原运算符的优先级和结合性不变。(正确)67、虚函数是用virtual关键字说明的成员函数。(正确)68、构造函数说明为纯

10、虚函数是没有意义的。(正确)69、抽象类是指一些没有说明对象的类。(错误)/抽象类是指一些“不能”说明对象的类。70、动态联编是在运行时选定调用的成员函数的。(正确)1. 重载流操作符<<和>> 时,如果第一个参数的类型为ostream 和istream,那么这个重载函 数既可以用于标准输入输出流,也可以用于文件流上。 对,ostream 和istream是标准输入输出流、文件流、字符串流的基类 2. 在同一个类中,可以定义重载的成员函数 void f(int);和virtual void f(int); 。 错,这属于重复定义 3. 抽象类不会产生实例,所以不需要有构

11、造函数。 错,被派生时需要它的构造函数 4. 类A有一个非静态的成员函数f,其函数原型是:void A:f( ) const,则该函数被调用时, 一定是通过类A或类A的某后裔类的一个用const修饰符说明的常量对象调用的。 错,常函数可以由变量对象或常量对象调用 5. 异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。 错,可以在外层捕获,并且这是最常见的用法 6. 只要程序中没有A a1 = a2; 和A a1(a2); 形式的代码,类A的拷贝构造函数就不会被调 用。 错,参数传递或函数返回时也调用拷贝构造函数 7. 在protected继承方式下,派生类对象的指针不能直接转换

12、成指向基类对象的指针。 对,否则基类中的公有成员由不可见变为可见,权限被放大 8. 若静态成员函数中调用了一个函数f,那么f 一定不是虚函数。 对,静态成员函数不能是虚函数,因为虚函数入口需要在保存在对象中的虚函数 表中,而静态成员函数不属于对象。 9. 若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该 数据成员。 对,没有别的办法 10. 构造函数的函数体中,不能使用return语句;但在实现该类的自动类型转化函数时,必须 有return 语句。 对1、C+中标识符内的大小写字母是没有区别的。 (F)2、C+是一种以编译方式实现的高级语言。 (T)3、在公有继承

13、中,基类中的公有成员和私有成员在派生类中都是可见的。 (F)4、在私有继承中,基类中所有成员对派生类都是不可见的。 (F)5、返回值类型、参数个数和类型都相同的函数也可以重载。 (F)6、使用关键字class定义的类中缺省的访问权限是私有(private)的。 (T)7、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。(F)8、C+中使用了新的注释符(/),C语言中注释符(/*/)不能在C+中使用。 (F)9、While循环语句的循环体至少执行一次。 (F)10、引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。 (T)11、类封装了数据和操作

14、。 ( T )12、在类的定义中,必须包含private、public、protected三种存取方式对应的部分。 ( F )13、类中的数据成员不能为指针类型。 ( F ) 14、析构函数可以有形参。 (T )15、派生类至少有一个基类。 (T ) 16、在公有和保护继承方式下,派生类的对象可以对基类的保护成员进行访问。 ( T )17、全局函数和静态成员函数也能声明为虚函数。 (F )18、在一个类的对象空间里不包含静态成员的空间。 ( T )19、友元本身就是类的成员。 ( T ) 20、运算符重载后,原运算符的优先级和结合特性会改变。 ( F )21、一个类只能有一个对象。 ( F)2

15、2、在类中不能对所定义的数据成员进行初始化。 ( T )23、类的公有成员函数是类与外界的接口。 ( T ) 24、构造函数没有函数类型。 ( T )25、在派生类的构造函数的初始化表中不能对包含基类的子对象初始化。 ( T )26、在公有和保护继承方式下,派生类的成员可以对基类的保护成员进行访问。 ( F )27、只有类的成员函数才能声明为虚函数。 ( T )28、在一个类的对象空间里已经包含了静态成员的空间。 (F )29、C+不允许将构造函数、析构函数和虚函数声明为友元函数。( T ) 30、运算符重载后,原运算符的优先级和结合特性不会改变。 ( T )31.C+中使用了新的注释符(/)

16、,C语言中注释符(/*/)不能在C+中使用。 (F)32.数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。 (F)33.隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。 (F)34.宏定义命令是以分号结束的。 (F)35.While循环语句的循环体至少执行一次。 (F)36.返回值类型、参数个数和类型都相同的函数也可以重载。 (F)37.函数形参的作用域是该函数的函数体。 (T)38.静态类标识符在它的作用域之外是不存在的。 (F)39.对象成员的表示与结构变量成员表示相同,使用运算符.或->。 (T)40.某类中的友元类的所有成员函数可以存取或修改该类中的

17、私有成员。 (T)41.对象数组的元素可以是不同类的对象。 (T)42.const char *p说明了p是指向字符串的常量指针。 (F)43、引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。(F)44、无论是私有继承还是保护继承中,基类中所有成员对派生类对象都是不可见的。(T)45、当break语句用在双重循环的内循环中时,它只能退出内循环到外循环中去,而不能直出整个双重循环。 (T)46、For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。 (F)47、返回值类型、参数个数和参数类型都相同的函数也可以重载。 (F)48、通常的拷贝初始化函数的参数是某个

18、对象的成员名或对象的引用名。 (T)49、友元函数是类的成员函数,所以可以存取或修改该类中的私有成员。 (F)50、已知:类A中一个成员函数说明如下:void Set(A&a);其中A &a的含意是将a的地给变量Set。 (F)51、在语句const char *ptr中, ptr是指向字符串的常量指针。 (F)52、多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序,而与派生类构造函数中所定义的成员初始化列表的各项顺序无关。 (T)53、在说明语句 int a(15),&b=a,*p=&a;中,b的值的*P的是不相等的。(F)54、

19、已知:int a(5),b(10);表达式+a+b+有二义性。(F)55、在不同类型操作数组成的表达式中,其表达式的类型一定是最高类型double型。(F)56、break语句也可以用于if体内,它可退出if语句。(F)57、在一个被调用函数中,一个return语句可返回多个值给调用函数。(F)58、在传值调用中,要求实参和形参的类型完全一致并且个数相等。(F)59、for循环中,循环变量的作用域是该循环的循环体内。(F)60、所谓私有成员是指只有类中所提供的成员函数才能直接访问它们,任何类以外的函数对它们的访问都是非法的。(F)61、const char *p说明了p是指向字符串的常量指针。

20、(F)62、私有继承中,基类中所有成员对派生类的对象都是不可见的。(F)填空1、定义类的动态对象数组时,系统只能够自动调用该类的 无参 构造函数对其进行初始化。 2、在 C+ 程序设计中,建立继承关系倒挂的树应使用单一 ( 或单 )继承。 3、表达式 cout<<end1 还可表示为 cout<< n 。 4、基类的公有成员在派生类中的访问权限由 访问控制 决定。 5、C+ 支持的两种多态性分别是编译时的 ( 或静态,或操作重载 ) 多态性和运行时的 ( 或动态,或虚函数 ) 多态性。 6、C+ 中语句 const char * const p= hello ;所定义的

21、指针 p 和它所指的内容都不能被 改变 ( 或重新赋值 )。 7、假定 AB 为一个类,则语句 AB(AB&x) ;为该类复制初始化 ( 或拷贝 )构造函数的原型说明。 8、将关键字 const 写在成员函数的 函数头 ( 或参数表 )和函数体之间时,所修饰的是 this 指针。 9、在 C+ 中,访问一个对象的成员所用的运算符是成员选择运算符 ( 或“ . ” ),访问一个指针所指向的对象的成员所用的运算符是成员访问运算符 ( 或“ -> ” )。 10、派生类从一个或多个以前定义的该类的 基 类继承数据和函数。11、在一个类中可以对一个操作符进行函数重载。12、在C+中有二种

22、参数传递方式:传值与传引用。13、模板对处理数据的类型的要求不同可以分为两种类型:函数模板与类模板。14、静态联编是在程序_ 编译 时进行的,而动态联编是在程序_ 运行 时进行的。15、在函数体之前加_const_关键字可以防止函数改变数据成员的值。16、一个const对象只能访问_ const _成员函数。17、派生类的主要用途是可以定义其基类中成员函数。18、当建立_对象时_,程序自动调用该类的构造函数。19、使用指向对象的指针来标识类的成员,则使用的运算符是_->_。20、拷贝初始化构造函数使用 一个已知对象 来初始化创建中的对象。21、 使用const语句定义一个标识符常量时,则

23、必须对它同时进行初始化。22、设px是指向一个类动态对象的指针变量,则执行”delete px;”语句时,将自动调用该类的析构函数。23、若需要把一个函数”void F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:friend void F(); 24、若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用iostream.h 头文件。25、在C+中,用数组、指针、和引用作为函数参数,能够将参数值带回。26、在C+中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的封装特性。27、在C+中,构造派生类对象时,总是先从基类的

24、初始化开始的。28、拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是各个成员的复制。29、类是用户定义的类型,具有类类型的变量称作 对象。30、在C+中,类定义一般用class关键字,不过用struct关键字也可以定义类,它们定义类的区别在于用class定义时成员默认为private, 用struct定义时成员默认为public。31、静态的成员函数没有隐含的this指针,所以,它们只能访问静态的数据成员。32、在面向对象的程序设计中,通过类实现数据隐藏;通过继承实现代码的复用。33、在下面的程序段中,语句"const int* c=&a

25、;"和语句"int* const d=&b;"的含义分别是定义一个指向禁止修改的实体的指针、定义一个指针常量(不可修改的指针)。 const int a=78; int b=28; const int* c=&a; int* const d=&b;34、用new申请有10个数组元素的指针str,假定数组元素是字符型数据,该C+语句为 char *str=new char10。35、在C+中构造一个对象时,其数据成员在构造函数中初始化。对于内嵌的子对象、基类成员 、静态数据成员需要在构造函数的成员初始化列表中初始化。36、在类的定义中,保护数

26、据成员具有双重作用:对于其派生类而言,类似于public 成员 ;而对于其外部的程序而言,类似于private 成员。37、C+中,对象保存在内存中,栈内存是自动分配和释放的,而堆内存需要用户自己申请和释放。38、在C+函数中,可用return语句带回一个值。如果有多个返回值,可用指针、引用带回。39、拷贝构造函数使用对象引用作为参数初始化创建中的对象。40、用new申请某一个类的动态对象数组时,在该类中必须能够匹配到缺省的构造函数,否则应用程序会产生一个编译错误。 41、 静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象使用。 42、面向对象的程序设计有四大特征,它们是抽

27、象、封装、继承 、多态性。 43、在C+中,定义重载函数时,应至少使重载函数的参数个数或参数类型不同。 43、动态联编要满足两个条件,它们是使用基类指针、虚函数。 44、在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为抽象类,定义该类至少具有一个纯虚函数。45、在C+类中,const关键字可以修饰对象和成员函数,const对象不能被修改,只有const成员函数才能操作const对象。 46、举出C+中两种用户自定义的数据类型:结构体 、类。 47、面向对象程序设计的继承机制提供了重复利用程序资源的一种途径。 48、对虚函数使用基类类型的指针或引用调用,系统使用动态联编;而使用对象

28、调用时,系统使用静态联编。 49、允许访问一个类的所有对象的私有成员、公有成员和保护成员的函数是该类的成员函数和友员函数。 50、执行完C+程序中的三条语句: int a,b,*c=&a; int * &p = c; p = &b; 后c指向 b 。 51、在类定义中,类说明以关键字class开始,其后跟类名,它必须是一个有效的C+标识符。类说明的内容用花括号括起来,称为类的定义。 52、实现类对象初始化任务的是该类的构造函数。 53、初始化类模板时,相对于它的每个参数要提供类型参数。 54、从一个抽象类派生的类必须提供纯虚函数的实现代码,或者在该派生类中将它再说明为纯

29、虚函数。 55、. 将关键字 const 写在函数头之后,函数体之前,说明该函数是一个 const 成员函数。此时 const 不是指定函数的返回值,而是修饰 this 指针。 56、一个抽象类的派生类可以实例化的必要条件是实现了所有的纯虚函数 。 57、在 C+ 中,虚函数帮助实现了类的 多态 性,而虚基类解决了二义性。 58、通过 C+ 语言中类的 继承,可以扩充和完善已有类以适应新的需求。 59、为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义 析造函数。 60、在已经定义了整型指针 ip 后,为了得到一个包括 10 个整数的数组并由 ip 所指向,应使用语句

30、 ip=new int 10;。 1 在C+中,函数的参数有两种传递方式,它们是值传递和 地址或指针或引用传递。2 当一个成员函数被调用时,该成员函数的 this指针 指向调用它的对象。3在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有 作用域分隔符限定时 ,对此数据成员的访问将出现歧义。4 拷贝构造函数使用 引用 作为参数初始化创建中的对象。5 在公有继承的情况下,基类数据成员在派生类中的访问权限 保持不变 。6 描述命题"A小于B或小于C"的表达式为 A<B|A<C。7 用new申请某一个类的动态对象

31、数组时,在该类中必须能够匹配到 没有形参的或缺省参数 构造函数,否则应用程序会产生一个编译错误。8静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象 共享 。9为了避免可能出现的歧义,C+对ifelse语句配对规则规定为:else总是与 与最近的if 配对。10 设"int a=3,b=4,c=5;",表达式"(a+b)>c&&b=c"的值是 0 。(以下每小题2分,共20分)11 面向对象的程序设计有四大特征,它们是抽象、封装、 继承 、 多态 。12 在Visual C+中,定义重载函数时,应至少使重载函数的参

32、数个数或参数类型 不同 ;在基类和派生类中,成员函数的覆盖是指 派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同 。13构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个、 析构函数没有参数 、析构函数可以定义为虚函数 。14 动态联编要满足两个条件,它们是 被调用的成员函数是虚函数 、用指针或引用调用虚函数 。15在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为 抽象类 ,定义该类至少具有一个 纯虚函数 。16 在C+类中,const关键字可以修饰对象和成员函数,const对象不能 被修

33、改 ,const成员函数不能 修改类数据成员 。17 举出C+中两种用户自定义的数据类型: 类 、 枚举 。18 C+中没有字符串类型,字符串是通过 字符数组 来表示的,每一个字符串都有一个结尾字符 0 。19 C+中没有输入输出语句,输入输出是通过 输入输出库 实现的,写出一条打印整型变量n的输出语句:cout<<n;20 举出C+中两种代码复用的方式: 继承 、复用 。 1. C+语言的头文件与源程序文件扩展名分别是(.h )和( .cpp )。 2. 在C+程序中使用基本输入与输出流时需要包含的头文件名是( iostr eam )。 3. 在C+语言中,惟一的一个三目运算运算

34、符是( ?: )。 4. C+中当一个函数无返回值时,则函数的类型是(void )。5. 一个类中可以有(多)个构造函数,只能有( 一 )个析构函数。6.一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为( 私有 )权限, 而把成员函数(方法)定义为(公有 )权限.7.在定义类的对象时,C+程序将自动调用该对象的( 构造 )函数初始化对象自身.在撤销类的对象时,C+程序将自动调用该对象的( 折构 ) 函数.8.类继承中,缺省的继承方式是( 私有继承 ).9在C+语言中,用转义字符序列( 'n' )或操纵符( endl )表示输出一个换行符。10表达式a=al表示成增

35、量表达式为( +a )。11当不需要函数返回任何值时,则应把该函数类型定义为( void )。12用于输出表达式值的标准输出流对象是( cout)。,用于从键盘上为变量输人值的标准输人流对象是(cin )。13、变量分为全局和局部两种,(全局变量默认初始化为0 )。变量没有赋初值时,其值是不确定的。14、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为( AB::bb )。15、类的成员分为数据成员和成员函数。16、一个类和对象的关系,正如基本数据类型与该类型的变量一样,如int x;。17、对一个类中的数据成员的初始化可以通过构造函数中的赋值实现,也可以

36、通过构造函数中的初始化列表实现。18、类有两种用法:一种是定义对象,即生成类的对象;另一种是通过派生,派生出新的类。19、C+语言提供的多态机制允许一个派生类继承多个基类,即使这些基类是相互无关的。20、声明虚函数的方法是在基类中的成员函数原型前加上关键字virtual。21、如果一个类中有一个或多个纯虚函数,则这个类称为虚基类。22、静态数据成员在定义或说明时,前面要加上关键字static。23、如果成员函数不需要访问类的非静态成员,则可以把它声明为静态成员函数。24、友元可以是全局函数,也可以是其他类的成员函数。25、若需要把一个函数“void fun();”定义为一个类A的友元函数,则应

37、在类A的定义中加入一条语句:friend void fun();。26、运算符函数中的关键字是operator,它和运算符一起组成该运算符函数的函数名。27、类中运算符重载一般采用两种形式:成员函数和友元函数。28、面向对象程序设计的3大机制为:封装性、继承性和多态性。2、类的访问权限有public、private和protected三种。29、构造函数是对象被创建时自动执行,对象消失时自动执行的成员函数称为析构函数。30、如果类A继承了类B,则类A称为基类,类B称为派生类。31、如果一个特定的类型S当且仅当它提供了类型T的行为时,则称类型S是类型T的子类型。32、在类定义中,将=0置于虚函数

38、的函数原型的末尾可以声明该函数为纯虚函数。33、类的静态成员分为静态数据成员和静态成员函数。34、友元函数的声明可以放在类的私有部分,也可以放在类的共有部分,它们是没有区别的。35、如果说类B是类A的友元类,则类B的所有成员函数都是类A的成员函数。36、设a和b是两个整型变量,我们用a+b的形式求这两个变量的和;设c和d为浮点型变量,我们用c+d的形式求这两个变量的和。显然运算符“+”具有不同的用途,这是运算符重载的例子。37、对于双目运算符,若重载为类的成员函数,有1个参数;若重载为友元函数,则有2个参数。38、 当建立_一个新的对象_,程序自动调用该类的构造函数。39、 在C+中有二种参数

39、传递方式:_传值_ 和_引用_ 。40、 模板对处理数据的类型的要求不同可以分为两种类型:_函数模板_ 和 _ 类模板_。41、 异常是通过_检查(try)_ 、_抛出(throw)_和_捕捉(catch)_ 来实现的。42、 虚函数实现了C+的_多态_ 机制,类实现了C+的_封装_ 机制。43、 面向对象程序设计的_继承_机制提供了重复利用程序资源的一种途径。44、C+语言程序设计的三种基本结构是:_顺序结构_ 、 _选择结构_ 、 _循环结构_ 。45、为了避免嵌套的条件语句if-else的二义性,C+语言规定else与_if _配对使用。46、定义函数时,在函数的类型前加上修饰词 _ i

40、nline _,指明将该函数定义为内联函数。47、有说明语句:*p;则*p+运算首先访问 _*p_,然后使_p_ 的值加1。48、执行int *p=new int 操作,可以得到一个动态分配整型对象的_指针_。49、有说明语句:int *p;则(*p)+运算首先访问 _*p_,然后使 _*p_的值加1。50 C+目标程序经_编译链接_后生成扩展名为exe的可执行程序文件。51 16位计算机中整型占_2_个字节存储空间。52 要在屏幕上显示"Hello,world!"应执行语句cout<<_ "Hello,world!" _。53 表达式8&a

41、mp;3的结果是_0_。54 作为语句的函数调用是通过_函数的副作用_来体现的。55 执行if (x>=0|x<=0) cout<<"abcd";else cout<<"wxyz";屏幕上显示的是_abcd_。56 设一维整型数组data已进行了初始化,则其元素个数可由操作符sizeof通过表达式_ sizeof(data) / sizeof(int) _计算出来。57 若一全局变量只允许本程序文件中的函数使用,则定义它时应加上修饰符_ static _。58 设有int w34;,pw是与数组名w等价的数组指针,则p

42、w应初始化为_ int*4 pw = w; _。59.要使引用pr代表变量char * p;,则pr应初始化为_ char*& pr = p; _。60在C+中封装性、继承性和_多态性 61假设int a=1,b2;则表达式a+-b的值为 _2_。62下面的程序实现输出x,y,z三个数中的最大值,请填入正确的内容。#include<iostream.h>void main() int x=5,y=8,z=9, u, v; if_(xu)_ u=x;else u=y;if_(uv)_ v=u;else v=z;cout<<”v=”<<v<<

43、endl;63C+语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取 _传地址_ 方式。64在C+语言中,访问一个对象的成员所用的运算符是 _ ., _,访问一个指针所指向的对象的成员所用的运算符是 _ -> _。65C+语言支持的两种多态性分别是编译时的多态性和 _运行时_的多态性。66设有如下程序结构:class Box ;void main()Box A,B,C; 该程序运行时调用_3_次构造函数;调用 _3_次析构函数。67目前,有两种重要的程序设计方法,分别是:_面向过程_和_面向对象_。68 C+语言提供的基本控制结构可以分为3种类型

44、:顺序结构、_分支_ 和循环结构。69函数的调用主要分为传值调用和_引用调用_调用。前者的特点是_不能改变传入变量的值 _。70函数重载时要求同名函数的_参数个数_或_参数类型_不同,否则无法确定是哪个函数。71静态数据成员是类的所有对象中的_共享_成员,而非静态数据成员是属于_一个具体_对象的。72 设A为test类的对象且赋有初值,则语句test B(A); 表示_将对象A复制给对象B _。73.面向对象程序设计方法中的每个对象都具有_属性_和_方法_两方面的特征。74.“类”指的是_对象的类型,代表了某一批对象的共性和特征_。75.构造数据类型,包括数组、_指针_、_结构体和共用体_、_

45、枚举_和类等。76.C+中数据类型标识符Signed Char,其字节数为_1_,范围是_-128到127_。77.在函数体内部定义的变量称为_局部变量_。在所有函数体外部定义的变量称为_全局变量_。78.有一数学表达式为2/3(f-32),要写成对应的C+的表达式时,正确地写法应写_2.0/3.0*(f-32)_。79.类的静态成员是_的所有对象中共享_的成员,不是_某个对象_的成员,静态成员在_类的声明中_进行引用性说明,在_其文件作用域的其他地方_进行定义性说明。80.使用传统的结构化程序设计方法设计程序的步骤是_自顶向下_、_逐步细化_、_模块化设计_。81.“封装”指的是_将有关的数

46、据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相互独立,互不干扰,且将对象中某些部分对外隐藏_。82.可以让新类继承已定义的类的_数据成员_和_成员函数_,这个新类称为_继承_,原来的类称为_基类_。新类可以从一个类中派生,这叫_单继承_,也可以从多个类中派生,称为_多重继承_。83.指针类型变量用于存储_另一变量的地址_,在内存中它占有_一个_存储单元。84.类有三种继承方式,分别是:_公有继承_、_保护继承_、_私有继承_。1. C+的流库预定义了4个流,它们是cin、cout、clog和_。答案:(P193)cerr解析cin、cout、clog和cerr分别用于标准输入、

47、输出、标准错误流(缓冲)和标准错误流(非缓冲)。2. 每个对象都是所属类的一个_。答案:实例解析类是对象的抽象,对象是类的一个实例。3. 在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句_。答案:int *ip=new int10;解析new用来动态开辟空间。常用来产生动态数组及对象构造函数。4. 函数模板中紧随template之后尖括号内的类型参数都要冠以保留字_。答案:class解析类模板的使用。template <class T>,也可以引入多参数的如:template <classT1,class T2,.,class Tn>

48、;5. 定义类的动态对象数组时,系统只能够自动调用该类的_构造函数对其进行初始化。答案:无参解析使用new创建对象数组,调用无参构造函数。6. 表达式cout<<end1 还可表示为_。答案:n解析endl与字符常量n等价。7. 在C+中,访问一个指针所指向的对象的成员所用的指向运算符是_。答案:->解析指针使用成员有两种方法:“->”指向运算符和“.”成员访问运算符。8. 假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个对象时,可以调用_构造函数来完成此功能。答案:复制或拷贝复制或拷贝构造函数就是用对象初始化新的对象。9. 对赋值运算符进行重载

49、时,应声明为_函数。答案:(P183)类成员解析运算符重载的方法有友元或者成员函数两种途径,但是赋值运算符只能使用成员函数的方法来实现。10. 如果要把A类成员函数f()且返回值为void声明为类B的友元函数,则应在类B的定义中加入的语句_。答案:(P109)friend void A:f();解析成员函数作为另一个类的友元函数,格式为:friend 返回类型 类名:函数(形参)。11. 下列程序段的输出结果是_。for(i=0,j=10,k=0;i<=j;i+,j-=3,k=i+j);cout<<k;答案:4解析for循环结构,三个表达式的作用,初始化、循环判断条件和循环变

50、量变化。循环执行了三次,k的作用是计算i、j的和。12. String 类的_方法返回查找到的字符串在主串的位置。答案:(P40)find解析string类对象方法的find,查不到字符串,则返回-1。13. int n=0;while(n=1)n+;while循环执行次数是_。答案:无限次解析是赋值运算符,不是关系运算符,且不等0,所以死循环。14. 控制格式输入输出的操作中,函数_是用来设置填充字符。要求给出函数名和参数类型答案:setfill(char)解析格式控制方法的使用,如setw,setfill等等。15. C+语言支持的两种多态性分别是编译时的多态性和_的多态性。答案:运行时解

51、析多态性包括静态的(编译时)多态性和动态的(运行时)多态性。16. 设函数sum是由函数模板实现的,并且sum(3,6)和sum(4.6,8)都是正确的函数调用,则函数模板具有_个类型参数。答案:217. 执行下列代码string str("HelloC+");cout<<str.substr(5,3);程序的输出结果是_。答案:C+解析substr取子字符串,第1个参数表示要截取子串在字符串中的位置,第2个表示取多少个字符。18. 在面向对象的程序设计中,将一组对象的共同特性抽象出来形成_。答案:类解析类是相似特征的对象的抽象,对象是类的一个实例。19. 定义类动态对象数组时,元素只能靠自动调用该类的_来进行初始化。答案:无参构造函数解析使用new 创建动态对象数组,不能有参数,所以只能调用无参的构造函数,初始化对象20. 已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句是_。答案:ector <int>V2(V1);解析采用向量初始化另一个向量的形式:vector <type> name1(name);1. 假设int a=1,b=2;则表达式(+a

温馨提示

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

评论

0/150

提交评论