2022年面向对象程序设计 5.pdf
《2022年面向对象程序设计 5.pdf》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计 5.pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 / 27 一、填空题1. 面向对象系统的四个特性分别是抽象性继承性、封装性和多态性。2. 如果一个类至少有一个纯虚函数, 那么该类被称为抽象类。3. 对于含有对象成员的派生类, 其构造函数的执行顺序为:先执行基类构造函数、再执行子对象构造函数 , 最后执行派生类构造函数。4. 纯虚函数的声明格式为:virtual函数类型函数名 ( 参数列表 )=0。5. 运算符重载仍然保持原来的结合性、优先级和语法结构。6. 类型转换函数的作用是将一个类的对象转换成另一类型的数据。7. 静态联编支持的多态性称为编译时的多态性, 也称静态多态性。8. 类中成员的三种访问权限分别是public 、privat
2、e和 protected 。9. 定义派生类时 , 系统默认的继承方式是private 。10.C+允许在相同的作用域内以相同的名字定义几个不同实现的函数, 称这种同一个函数名多种含义的现象为函数重载。11. 在 C+ 中, 运行时的多态性主要通过虚函数和继承实现。12. 在一个函数的定义或声明前加上关键字inline时, 该函数就声明为内置函数。13. 派生类的成员包括从基类继承来的成员和自己增加的成员两大部分。14.cin称为 C+ 标准输入流。 63.在 C+ 语言中 ,cout被称为 标准输出流。15. 在 C+ 语言中 , 用运算符 new动态建立对象 , 用运算符 delete 撤
3、消对象。16. 基类的构造函数和析构函数不能被派生类继承。17. 名称为 temp的类的复制构造函数的原型声明语句为temp(consttemp&s) 。18. 设置友元函数的目的是为了能够访问该类的私有成员和保护成员。19. 在 C+ 程序中 , 静态成员函数主要用来访问静态数据成员。20. 类模板是类的抽象 , 类是类模板的实例。21. 拷贝构造函数的形参必须是当前类对象的引用类型。22. 进行函数重载时 , 被重载的同名函数如果都没有用const 修饰, 则它们的形参个数不同或类型不同或个数和类型都不同。23. 在类中必须声明成员函数的原型, 成员函数的实现部分可以写在类外。24. 多态
4、性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。25. 在已有类的基础上新增自己的特性而产生新类的过程称为派生。26. 当用类的一个对象去初始化该类的另一个对象时系统自动调用复制构造函数实现赋值。27. 友元函数是在类声明中由关键字friend修饰说明的非成员函数 , 在它的函数体中能够通过对象名访问 private和 protected成员。28. 如果需要在某个类的声明之前, 引用该类 , 则应进行前向引用声明。29. 对象是将数据及对数据的操作方法封装在一起, 作为一个相互依存、不可分离的整体。30.C+中输出数据时 , 在标准输出流对象cout 之后使用的运算符“
5、。45. 若要实现两个复数类对象相加运算, 并且满足交换律 , 要将“ +”重载为类的友元函数。46. 面向对象技术强调软件的可重用性,C+语言提供了类的继承机制 , 解决了软件重用问题。47.C+中允许一个派生类同时继承多个基类, 这种行为称为多重继承。48. 声明虚基类命令的的一般形式为class 派生类名 :virtual 继承方式基类名。49. 只有公用继承才是基类真正的子类型。50. 动态多态性是在程序运行过程中才动态地确定操作所针对的对象, 又称为运行时的多态性。51. 虚函数一定是类的成员函数。52. 静态成员函数没有this指针。53. 类中成员默认的访问属性是private
6、。54. 用关键字 inline声明的函数称为内置函数。55. 若将两个复数相加运算符“+”重载为类complex 的成员函数 , 且函数的返回值为当前类的对象 , 其函数的原型声明语句为complex operator+(complex &)。56. 若用 op代表 C+ 中任意一个允许重载的运算符, 其重载函数名为 operator op。57.C+中的模板分为类模板和函数模板。58. 具有封装性、继承性和多态性特点的程序设计称为面向对象的程序设计。59. 用已有对象复制一个新对象时要调用复制构造函数。60. 在基类中将show(无参数)声明为返回整型数据的纯虚函数的语句格式为:virtu
7、al int show()=0。61. 在派生类中 , 对基类的继承方式可以有public 、private和 protected 。62. 将双目运算符重载为某类的成员函数时, 该成员函数的左操作数为当前对象(或*this ),右操作数为函数参数。64. 若要访问类中的私有成员, 除了可以利用成员函数外 , 还可以采用的友元函数的方式。65. 定义静态成员函数的目的是为了访问类中的静态数据成员。66. 要实现运行时的多态性要使用虚函数和继承。67. 派生类的成员来自两个途径, 一种是派生类中定义的成员, 另一种从基类继承来的成员。68. 构造函数是一种特殊的成员函数, 其作用是对类的数据成员
8、进行初始化并执行对象的其他内部管理操作。69. 在类中定义和实现的函数称为成员函数。70.const 成员函数只能引用本类中的数据成员, 而不以修改数据成员。71. 如果一个类中至少有一个纯虚函数, 那么该类被称为抽象类。72.C+中用 static声明的对象称为静态对象。73. 若有类名为 sample, 则其复制构造函数的原型声明语句为sample(const sample&)。二、选择题1设 int =10, +=3+ %(-3), 则 =_C_。A.15 B. 11 C. 14 D.12 2下列运算符, 不能重载为友元函数的是_D_。A.、= B.+ 、- 、+、- C. += 、 -
9、=、*=、/= D. = 、()、 、- 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 27 页3 / 27 3在 C+ 中 , 要实现动态联编, 必须使用 _B_调用虚函数A. 派生类指针B.基类指针C.对象名D.类名4若运算符“”被重载为类的成员函数, 则表达式obj1obj2被 C+ 编译器解释为_A_。A. obj1.operator(obj2) B. obj2.operator(obj1) C. operator() D. (obj1,obj2) 5对于语句cout endl 。中的各个组成部分, 下列叙述中错误的是_B_。
10、A.“cout ”是一个输出流对象B. “ B. C. - D. 17. 已知类 A中一个成员函数说明如下:Void set(A &a)。其中 ,A &a 的含义是 _C_。A.指向类 A的指针为a B.将 a 的地址值赋给变量set C. a 是类 A的对象引用 , 用来作为函数set ()的形参D. 变量 A与 a 按位相与作为函数set ()的参数18. 带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化次数_B_。A.与虚基类下面的派生类个数有关B.一次C.二次D. 多次19. 下列函数中 ,_D_不能重载。A.成员函数B. 非成员函
11、数C.构造函数D.析构函数20. 关于动态联编的下列描述中,_A_ 是错误的。A.动态联编是在编译时确定操作函数的B. 动态联编是以虚函数为基础的精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 27 页4 / 27 C. 动态联编是在运行时确定所调用的函数代码的D.动态联编调用函数操作是用指向对象的指针或对象引用21. 下列运算符中,_D_运算符不能重载。A. & B. new C. D. : 22. 关于虚函数的描述中,_A_ 是正确的。A.函数基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数B.虚函数是一个非成员函数C
12、. 虚函数是一个static类型的成员D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型23. 下面关于对象的描述中,错误的是 _D_。A. 对象之间的信息传递是通过消息进行的B.对象是类的实例C.一个类可以定义多个对象D.对象是类的别名24. 下述静态数据成员的特性中,_C_是错误的。A.说明静态数据成员时前边要加修饰符static B.引用静态数据成员时, 要在静态数据成员名前加和作用域运算符C.静态数据成员不是所有对象所共用的D.静态数据成员要在类体外进行初始化25. 有关类的说法中, 不正确的是 _D_。A.类是一种用户定义的数据类型B.类中的成员函数能够存取类中的私有数据C.在
13、类中 , 如果不作特别说明, 所有的成员函数均为私有类型D.在类中 , 如果不作特别说明, 所有的数据成员均为公有类型26. 当一个派生类私有继承一个基类时, 基类中的所有公有成员和保护成员成为派生类的_C_。A. public成员B. protected成员C. private成员D.友元27. 有如下类声明:class sample public:int mem。 。则 sample 类的成员mem 是_B_ A公有成员函数B公有数据成员C 私有数据成员D私有成员函数28. 在 C+ 中 , 关于设置参数的默认值的描述中, 正确的是 _A_。A.设置参数默认值时, 应该是先设置右边的再设置
14、左边的B.设置参数默认值只能在定义函数时设置C.设置参数默认值时, 应该全部参数都设置D.不允许设置参数的默认值29. 函数模板的使用, 实际上是将函数模板实例化成一个具体的_B_。A.类B.函数C.对象D.模板类30. 在多重继承中, 公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则_A_。A.完全相同B.完全不同C.部分相同 , 部分不同 D. 以上都不对31. 下面关于对象概念的描述中,_C_ 是错误的。A.对象是一个状态和操作( 或方法 ) 的封装体B.对象代表着正在创建的系统中的一个实体C.对象就是C语言中的结构体变量D.对象之间的信息传递是通过消息进行的32. 继承
15、机制的作用是_A_ A定义新类B数据封装C 数据抽象D信息隐藏33. 有关析构函数的说法不正确的是_A_ A.析构函数不能是虚函数B.析构函数无任何函数类型C.析构函数没有形参D.析构函数有且只有一个精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 27 页5 / 27 34. 友元的作用之一是_C_ A.加强类的封装性B.实现数据的隐藏性C.提高程序的运行效率D.增加成员函数的种类35. 通常拷贝构造函数的参数是_B_。A.本类对象名B.本类对象的引用名C. 本类对象的成员名D.本类对象的指针名36. 如果在基类中将show声明为不带返
16、回值的纯虚函数, 正确的写法是 _C_。A.virtual show()=0。B.virtual void show()。C.virtual void show()=0。D.void show=0 virtual。37. 下面关于友元的描述中,错误的是 _A_。A.类与类之间的友元关系可以继承B.一个类的友元类中的成员函数都是这个类的友元函数C.友元函数可以访问该类的私有数据成员D.友元可以提高程序的运行效率38. 在 C+ 中 ,_B_ 运算符不能重载。A. + B. sizeof C.- D.”被重载为类的友元函数, 则表达式obj1obj2被 C+编译器解释为_C_。A. (obj1,o
17、bj2) B. obj1.operator(obj2) C. operator(obj1,obj2) D. operator() 49下面关于友元的描述中, 错误的是 _C_。A.友元函数可以访问该类的私有数据成员精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 27 页6 / 27 B.友元可以提高程序的运行效率C.类与类之间的友元关系可以继承D.一个类的友元类中的成员函数都是这个类的友元函数50有关构造函数的说法不正确的是_C_。A.构造函数名字和类的名字一样B.构造函数无任何函数类型C.构造函数有且只有一个D.构造函数在说明类的某个
18、对象时自动执行51设 n=8,i=4,则赋值运算n%=i+1 执行后 ,n 的值是 _C_。A. 0 B. 1 C. 3 D. 2 52在下列选项中,_B_不能作为判定函数重载的依据。A.参数个数B.函数的类型C. 参数的类型D.函数名称53有关虚函数的说法不正确的是_A_。A.静态成员函数可以是虚函数B.只有类的成员函数才能说明为虚函数C.构造函数不能是虚函数D.析构函数可以是虚函数54. 派生类的对象对它的基类_D_是可以访问的。A.公有继承的私有成员B.私有继承的公有成员C.公有继承的保护成员D.公有继承的公有成员55. 下列关于switch语句的描述中,_A_ 是正确的。A. swit
19、ch语句中 default子句可以没有 , 也可有一个B. switch语句中每个语句序列中必须有break 语句C. switch语句中 default子句只能放在最后D. switch语句中 case 子句后面的表达式只能是整型表达式56能用友元函数重载的运算符是_D_。A. - B. = C. D. + 三、读程序写结果1.#include using namespace std 。class point public: point(int i,int j)x=i。y=j 。 void print()cout (x , y)endl。 void operator+=(pointp)x+=
20、p.x。y+=p.y 。 void operator-=(pointp)x-=p.x。y-=p.y 。 private: int x,y。void main() pointp1(2,3),p2(1,4)。p1.print()。p2.print()。p1+=p2。p1.print()。p2-=p1。p2.print()。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 27 页7 / 27 运行结果 : (2,3) (1,4) (3,7) (-2,-3) 2. #include using namespace std 。class tim
21、er public: timer() seconds=0。 timer(int t) seconds=t。 timer(int min,int sec) seconds=min*60+sec。 int gettime() return seconds。 private: int seconds。void main() timer a,b(20),c(3,12)。coutseconds1=a.gettime()endl。coutseconds2=b.gettime()endl。coutseconds3=c.gettime()endl。 运行结果 : seconds1=0 seconds1=20
22、seconds1=192 3#include using namespace std 。class A public: A(int i,int j)a=i。b=j。 void move(int x,int y)a+=x。b+=y。 void show()cout (a ,b)endl。 private: int a,b。 。class B:public A public: B(int i,int j,int k,int l):A(i,j),x(k),y(l) void show()coutx,yendl。 void fun()move(3,5)。 void f1()A:show()。 priv
23、ate: 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 27 页8 / 27 int x,y。 。int main() A e(4,6)。e.show() 。B d(1,3,2,5)。d.fun()。d.A:show()。d.B:show()。d.f1()。system(pause) 。return 0。 运行结果 : (4,6) (4,8) 2,5 (4,8) 4. #include using namespace std 。class A public: A(int i=0)m=i。coutconstructor called.m
24、endl。 void set(int i) m=i。 void print() const coutm endl。 A(const A &s)m=s.m 。coutcopyendl 。 A()coutdestructor called.mendl。 private: int m 。 。int main() const int N=7。A my。my=N 。my.print()。return 0。 运行结果 : constructor called.0 constructor called.7 desstructor called.7 7 精选学习资料 - - - - - - - - - 名师归
25、纳总结 - - - - - - -第 8 页,共 27 页9 / 27 desstructor called.7 5. #include using namespace std 。class M public: M(int a=0,int b=0) x=a。y=b。 int getx() return x。 int gety() return y。 private: int x,y。int main() M op1(8,6)。int i,j。i=op1.getx()。j=op1.gety()。couti=i,j=jendl。system(pause) 。return 0。 运行结果 : i=8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年面向对象程序设计 2022 面向 对象 程序设计
限制150内