VC++作业三
- 格式:doc
- 大小:70.00 KB
- 文档页数:14
作业题1一、选择填空1.在下列关键字中,用于说明类中公有成员的是()。
A.public;B.private;C.protected;D.friend 2.在下列的各类函数中,()不是类的成员函数。
A.构造函数;B.析构函数;C.友元函数;D.拷贝初始化构造函数3.作用域运算符的功能是()。
A.标识作用域的级别的;B.指出作用域的范围的;C.给定作用域的大小的;D.标识某个成员是属于哪个类的。
4.()是不可以作为该类的成员的。
A.自身类对象的指针;B.自身类的对象;C.自身类对象的引用;D.另一个类的对象。
5.()不是构造函数的特征。
A.构造函数的函数名与类名相同;B.构造函数可以重载;C.构造函数可以设置缺省参数;D.构造函数必须指定类型说明。
6.()是析构函数的特征。
A.一个类中只能定义一个析构函数;B.析构函数名与类名不同;C.析构函数的定义只能在类体内;D.析构函数可以有一个或多个参数。
7.通常的拷贝初始化构造函数的参数是()。
A.某个对象名;B.某个对象的成员名;C.某个对象的引用名;D.某个对象的指针名。
8.关于成员函数特征的下述描述中,()是错误的。
A.成员函数一定是内联函数;B.成员函数可以重载;C.成员函数可以设置参数的缺省值;D.成员函数可以是静态的。
9.下述静态数据成员的特性中,()是错误的。
A.说明静态数据成员时前边要加修饰符static;B.静态数据成员要在类体外进行初始化;C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;D.静态数据成员不是所有对象所共用的。
10.友元的作用()。
A.提高程序的运用效率;B.加强类的封装性;C.实现数据的隐藏性;D.增加成员函数的种类。
二、判断下列描述的正确性,对者划√,错者划×。
1.使用关键字cl ass定义的类中缺省的访问权限是私有(private)的。
2.作用域运算符(::)只能用来限定成员函数所属的类。
3.析构函数是一种函数体为空的成员函数。
4.构造函数和析构函数都不能重载。
5.说明或定义对象时,类名前面不需要加class关键字。
6.对象成员的表示与结构变量成员表示相同,使用运算符.或->。
7.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。
8.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
9.可以在类的构造函数中对静态数据成员进行初始化。
10.如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。
作业题2一、选择填空1.下列对派生类的描述中,()是错的。
A.一个派生类可以作另一个派生类的基类;B.派生类至少有一个基类;C.派生类的成员除了它自已的成员外,还包含了它的基类的成员;D.派生类中继承的基类成员的访问权限到派生类保持不变。
2.派生类的对象对它的基类成员中()是可以访问的。
A.公有继承的公有成员;B.公有继承的私有成员;C.公有继承的保护成员;D.私有继承的公有成员。
3.对基类和派生类的关系描述中,()是错的。
A.派生类是基类的具体化;B.派生类是基类的子集;C.派生类是基类定义的延续;D.派生类是基类的组合。
4.派生类的构造函数的成员初始化列中,不能包含()。
A.基类的构造函数;B.派生类中子对象的初始化;C.基类的子对象初始化;D.派生类中一般数据成员的初始化。
5.关于子类型的描述中,()是错的。
A.子类型就是指派生类是基类的子类型;B.一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型;C.在公有继承下,派生类是基类的子类型;D.子类型关系是不可逆的。
6.关于多继承二义性的描述中,()是错的。
A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性;B.解决二义性的最常用的方法是对成员名的限定法;C.基类和派生类中同时出现的同名函数,也存在二义性问题;D.一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性。
7.设置虚基类的目的是()。
A.简化程序;B.消除二义性;C.提高运行效率;D.减少目标代码。
8.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化()。
A.与虚基类下面的派生类个数有关;B.多次;C.二次;D.一次。
二、判断下列描述的正确性,对者划√,错者划×。
1.C++语言中,既允许单继承,又允许多继承。
2.派生类是从基类派生出来,它不能再生成新的派生类。
3.派生类的继承方式有两种:公有继承和私有继承。
4.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
5.在公有继承中,基类中只有公有成员对派生类对象是可见的。
6.在私有继承中,基类中只有公有成员对派生类是可见的。
7.在私有继承中,基类中所有成员对派生类的对象都是不可见的。
8.在保护继承中,对于垂直访问同于公有继承,而对于水平访问同于私有继承。
9.派生类是它的基类的组合。
10.构造函数可以被继承。
11.析构函数不能被继承。
12.子类型是不可逆的。
13.只要是类M继承了类N,就可以说类M是类N的子类型。
14.如果A类型是B类型的子类型,则A类型必然适应于B类型。
15.多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。
16.单继承情况下,派生类中对基类成员的访问也会出现二义性。
17.解决多继承情况下出现的二义性的方法之一是使用成员名限定法。
18.虚基类是用来解决多继承中公共基类在派生类中只产生一个基类子对象的问题。
作业题3一、选择填空1.对定义重载函数的下列要求中,()是错误的。
A.要求参数的个数不同;B.要求参数中至少有一个类型不同;C.要求参数个数相同时,参数类型不同;D.要求函数的返回值不同。
2.下列函数中,()不能重载。
A.成员函数;B.非成员函数;C.析构函数;D.构造函数。
3.下列对重载函数的描述中,()是错误的。
A.重载函数中不允许使用缺省参数;B.重载函数中编译系根据参数表进行选择;C.不要使用重载函数来描述毫无相干的函数;D.构造函数重载将会给初始化带来多种方式。
4.下列运算符中,()运算符不能重载。
A.&&; B. [ ]; C. : : ; D. new5.下列关于运算符重载的描述中,()是正确的。
A.运算符重载可以改变操作数的个数;B.运算符重载可以改变优先级;C.运算符重载可以改变结合性;D.运算符重载不可以改变语法结构。
6.运算符重载函数是()。
A.成员函数;B.友元函数;C.内联函数;D.带缺省参数的函数。
7.关于动态联编的下列描述中,()是错误的。
A.动态联编是以虚函数为基础的;B.动态联编是在运行时确定所调用的函数代码的;C.动态联编调用函数操作是指向对象的指针或对象引用;D.动态联编是在编译时确定操作函数的。
8.关于虚函数的描述中,()是正确的。
A.虚函数是一个stati c类型的成员函数;B.虚函数是一个非成员函数;C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数;D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型。
9.关于纯虚函数和抽象类的描述中,()是错误的。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现;B.抽象类是指具有纯虚函数的类;C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类;D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。
10.下列描述中,()是抽象类的特性。
A.可以说明虚函数;B.可以进行构造函数重载;C.可以定义友元函数;D.不能说明其对象。
二、判断下列描述的正确性,对者划√,错者划×。
1.函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。
2.重载函数可以带有缺省值参数,但是要注意二义性。
3.多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。
4.对每个可重载的运算符来说,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。
5.对单目运算符重载为友元函数时,说明一个形参;重载为成员函数时,不能显式说明形参。
6.重载运算符保持原运算符的优先级和结合性不变。
7.虚函数是用virtual关键字说明的成员函数。
8.构造函数说明为纯虚函数是没有意义的。
9.抽象类是指一些没有说明对象的类。
10.动态联编是在运行时选定调用的成员函数的。
作业题4一、判断题1.面向对象的三大特征是封装性、继承性和抽象性。
2.面向对象编程总是比面向过程优越。
3.面向对象有利于软件重用。
4.类的成员函数不能访问类中的私有数据。
5.类的对象不能访问类的保护数据或者成员函数。
6.封装性意味着用户不用关心成员函数的内部是如何实现的,只要知道其功能及其使用方法即可。
7.派生类不能访问基类的私有数据和成员函数。
8.派生类仅仅需要继承基类的接口时,一般推荐作用私有继承方式。
9.只有公有继承方式下的派生类才能是基类的子类型。
10.子类型关系是实现动态联编的基础之一。
11.virtual关键字的作用是阻止编译器编译阶段绑定函数的实现。
12.虚函数必须是类的非静态成员函数。
13.继承性是基于对象和面向对象的分水岭。
14.引用是变量的别名。
15.函数重载和运算符重载、函数模板和类模板都是静态多态性的表现。
16.一个类可能有多个析构函数。
17.虚析构函数的目的是防止内存泄漏。
18.一般情况下,编译器默认提供对象的赋值运算。
19.C++允许函数的形参带有默认值。
20.类的常成员函数的确切含义是函数体的代码不能修改实参的值,但是可以修改形参的值。
作业题5一、判断题1.系统为每个执行的应用程序分配一个索引号。
2.窗口类是C++类。
3.定义窗口类变量并给变量初值的目的是为了描述一类窗口的属性。
4.窗口创建后,自动可见。
5.窗口句柄是系统分配的存放窗口数据的内存索引。
6.窗口句柄是系统惟一的。
7.窗口是可见的界面,而它在内存中通常以窗口句柄来指定。
8.Windows API是用于创建窗口程序的函数集,其它语言如VB,Delphi 等也可调用。
9.Windows程序的主函数是WinMain,不能带启动参数。
10.Windows程序的窗口函数是由系统调用的。
11.窗口函数与WinMain的关联是通过窗口类的注册实现的。
12.每个窗口必须有一个窗口函数,且每个窗口函数的形参表相同。
13.事件驱动的好处是程序不必按照规定的流程执行。
14.Windows程序的资源把界面和逻辑分隔开来。
15.定义字符串资源便于软件国际化。
16.Windows程序的打印和屏幕显示代码可以一致。