收藏 分享(赏)

OOP技术:面向对象技术复习思考题.doc

上传人:dzzj200808 文档编号:2207739 上传时间:2018-09-05 格式:DOC 页数:20 大小:186.50KB
下载 相关 举报
OOP技术:面向对象技术复习思考题.doc_第1页
第1页 / 共20页
OOP技术:面向对象技术复习思考题.doc_第2页
第2页 / 共20页
OOP技术:面向对象技术复习思考题.doc_第3页
第3页 / 共20页
OOP技术:面向对象技术复习思考题.doc_第4页
第4页 / 共20页
OOP技术:面向对象技术复习思考题.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、OOP 技术:面向对象技术复习思考题一填空题1 在 C+中,函数的参数有两种传递方式,它们是值传递和 。当一个成员函数被调用时,该成员函数的 指向调用它的对象。2 拷贝构造函数使用 作为参数初始化创建中的对象。3 在公有继承的情况下,基类数据成员在派生类中的访问权限 。4 用 new 申请某一个类的动态对象数组时,在该类中必须能够匹配到 构造函数,否则应用程序会产生一个编译错误。5 静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象 。6 设“int a=3,b=4,c=5;“,表达式“(a+b)cchar ch;ch=a ;ch+;a=ch; coutvoid main(

2、)int a10=1,2,3,4,5,6,7,8,9,10,*p=a;printf(“%d“, *(p+2);4. #includevoid main()int *v,b;v= b=100; *v+=b;printf(“%dn“,b);5. void fun(int *x) printf(“%dn“,+*x); main() int a=25;fun(6. #include void main( )int a =1,2,3,4,5;int x, y, *p;p=x=*(p+2);y=*(p+4);printf(“*p=%d,x=%d,y=%dn“,*p,x,y);return;7. #incl

3、udevoid ast(int x,int y,int *cp,int *dp) *cp=x*y; *dp=x%y; void main() int a,b,c,d;a=2; b=3;ast(a,b,coutstruct cmplxint x;int y;cnum2=1,3,2,7;int main( )printf(“%dn“,cnum0.y*cnum1.x);return 0;9. #include struct stu int num; char name10;int age;void fun(stu *p) cout#define CIR(r) r*rvoid main()int x=

4、1;int y=2;int z;z=CIR(x+y);cout#define TESTvoid main()int x=0;int y=1;int z=1;#ifdef TESTcoutvoid main() char c;while(true) cout “;cin c;if (c = q)break; / while 结束if (c = l) cout c;if(c = c) cout c;if (c = a) cout 以及#include ”*.h”宏定义:#define条件编译:#ifdef#endif 以及 #ifndef#endif18 对象之间的相互作用和通信是通过消息。消息的

5、组成部分有哪些?答案:消息的组成部分包括接受者的名字、请求的方法、一个或多个参数。19 如何测试你机器的 int, float, double, long, char 各类型变量存储的字节数。答案:用 sizeof(类型名)即可测试各类型变量存储的字节数。20 do-while 语句与 while 语句的主要区别是什么?答案:do-while 语句:先执行循环体,再测试条件是否成立,若成立,则进入下一次循环,循环体语句至少被执行一次。while 语句:先测试条件是否成立,若成立,则执行循环体语句。21 break 语句实现的功能。答案:结束 break 所在的复合语句,可用于循环体语句, sw

6、itch 语句。22 链表是怎样的一种数据结构,它与数组有什么不同?链表的插入和删除是怎样实现的?答案:链表是一种只能顺序访问的线性结构,通过含有一个自身指针的结构类型实现。与数组的主要区别:数组占用的是连续的内存空间,而链表可以不连续。数组定义时一般要给出其长度,而链表的长度是不定的。链表的插入和删除:先从表头结点开始寻找插入或删除点的位置,然后通过修改相关指针的值,改变链表节点间的逻辑关系,删除操作还需释放节点所占空间。在插入和删除过程中都不需要移动元素。23 在定义拷贝构造函数时,为什么通常还要定义一个重载的赋值运算符?答案:拷贝构造函数在定义对象时调用,而重载的赋值运算符在附值表达式或

7、赋值语句中使用。24 拷贝构造函数在哪几种情况下调用?答案:定义语句中,用一个已有的对象初始化新对象时,或者在以对象为形式参数的韩树备调用时,都会调用拷贝构造函数。九判断题36. C+语言程序中,要调用的函数必须在 main()函数中定义。37. C+语言程序中,main()函数必须放在程序开始的部分。38. C+语言程序中,return 语句必须放在函数的最后。39. C+程序中有调用关系的所有函数必须放在同一源程序文件中。40. 运算符/的运算对象必须是整型。41. 字符数组中的字符串可以进行整体输入输出。42. 可以在赋值语句中通过赋值运算符“=“对字符数组整体赋值。43. 数组名作为函

8、数调用时的实参,则实际上传递给形参的是数组的第一个元素值。44. 当说明一个结构变量时,系统分配给它的内存是各成员所需内存量的总和。45. 用 typedef 可以定义各种类型名,但不能用来定义变量。46. 用 typedef 可以增加新类型。47. 宏替换不占用运行时间。48. 在#include 命令行中,用双引号和用尖括号将被包含的文件名括起来没有区别。49. C+编译中的编译预处理可以看作一行 C+语句。50. 头文件必须由系统提供。51. 创建派生类对象时,先调用基类的构造函数,再调用派生类的构造函数,当销毁这个对象时顺序正好相反,先调用派生类的析构函数,再调用基类的析构函数。 52

9、. 友元函数也是类的一种成员函数。53. 友元函数更好地实现了类的数据隐藏性。54. 一个类的构造函数和析构函数都可以重载。55. 静态成员函数仅能访问静态的数据成员。56. 静态数据成员的初始化必须在在构造函数内。57. 无论何时编译器都为类构造一个无参数的缺省的构造函数。 58. 无论什么方式的继承,基类的私有成员都不能被派生类访问。 59. 基类中定义了虚函数,在派生类中相应函数会自动变成虚函数。 60. 要达到动态联编的效果,基类和派生类的对应函数不仅名字相同,而且返回类型、参数个数和类型也必须相同。 61. 如果派生类没有实现虚函数,那么它将使用他的基类的虚函数。 62. 我们不能用

10、抽象类定义对象,但可以定义对象的指针。 63. 构造函数和析构函数可以是虚函数。 64. 使用关键字 class 定义的类中缺省的访问权限是私有(private)的。 65. 说明或定义对象时,类名前不需加 class 关键字。 66. 可以在类的构造函数中对静态数据成员进行初始化。 67. protected 和 private 区别在于: protected 成员可以被派生类访问,而 private 成员则不能被派生类访问。68. cout 通常与显示器相连,cin 通常与键盘相连。 69. setw(n)只对下一个输出有效。 70. hex、oct、dec 只对下一个输出有效。 答案:错

11、错错错错 对错错对对错对错错错 对错错错对错错对错对 对对错对对错对对对错 十程序设计题(10 个)1把下面程序中的 if 语句换成 switch 语句。 #include void main() char c;while(true) cout “;cin c;if (c = q)break; / while 结束if (c = l) cout c;if(c = c) cout c;if (c = a) cout void main()char c;while(true)cout “;cin c;switch (c) case q: break; / while 结束case l:cout c

12、;switch (c) case c:cout c;switch (c)case a:cout =m) c+; return c; 3有 4 个学生,每个学生包括学号,姓名,成绩。要求找出成绩最高者的姓名和成绩。答案:#include struct studentint num;char name30;float scroe;void main()student stu4=2002001,“Zhang“,85,2002003,“Wang“,88,2002017,“Liu“,76,2002022,“Cheng“,83;int max,i;max=0;for(i=1;istumax.score)

13、max=i;cout0) c=stcktos-1;tos-;return c;exit(0);9定义一个函数模板,该函数模板能够实现求两个数据的最小值。答案:template Type max (Type x, Type y) return (x=y) ? x : y ;10定义一个字符串类 myString,使其至少具有内容(contents)和长度(Length)两个数据成员,并具有显示字符串、求字符串长度、字符串连接等功能。答案:class MyString char *contents;int length;public:myString(char *p)length=strlen(p);contents=new charlength+1;strcpy(contents,p);int getlength( ) return length;void print( ) coutcontentsendl;void myStringCat(char *p)char *l;l=new charlength+1;strcpy(l,contents);delete contents;length=length+strlen(p);contents=new charlength+l;strcpy(contents,l);strcat(contents,p);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报