logo资料库

面向对象c++题库 答案.doc

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
一、填空题 第一章 1、面向对象程序设计方法的基本特征主要有抽象性、封装性、继承性和多态性。 2、继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。 3、不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。 4、编译时的多态性是通过重载来实现的。 5、运行时的多态性是通过虚函数来实现的。 6、“类”是对一组具有共同属性特征和行为特征的对象的抽象。 7、实例是一个类所描述的一个具体的对象。 8、类和对象之间的关系是抽象和具体的关系。 9、抽象就是从众多的事物中抽取出共同的、本质性的特征,舍弃其非本质的特 征。 10、子类继承了多个父类的数据结构和方法,则称为多重继承。 11、面向对象程序设计方法的基本特征主要有抽象性、封装性、继承性和多态性。 12、面向对象程序设计方法的基本特征主要有抽象性、封装性、继承性和多态性。 13、面向对象程序设计方法的基本特征主要有抽象性、封装性、继承性和多态性。 14、把面向对象思想应用于软件开发过程中,指导开发活动的系统方法,简称 OO 方法, 15、20 世纪 90 年代中期由 Booch,Rumbaugh 和 Jacoson 共同提出了统一建模语 言 UML,把众多面向对象分析和设计方法综合成一种标准,使面向对象的方法成 为主流的软件开发方法。 一、填空题 第二章 1、构造函数的功能是在创建对象时,给数据成员赋初值,即对象的初始化。 2、析构函数的功能是释放一个对象,在对象删除之前,用它来做一些内存释放 等清理工作,它的功能与构造函数的功能正好相反。 3、定义对象时,编译系统会自动地调用构造函数。 4、一个类中有且仅有一个析构函数,且应为 public。 5、在堆中创建的数据对象称为堆对象。 1
6、当函数被声明为一个类的友元函数后,它就可以通过对象名访问类的私有成 员和保护成员。 7、定义 A 是一个类,那么执行语句“A a, b(3),*p;”调用了 2 次构造函数。 8、this 指针是 C++实现封装的一种机制。 9、如果友元函数带了两个不同的类的对象,其中一个对象所对应的类要在后面 声明。为了避免编译时的错误,编程时必须通过向前引用告诉 C++,该类将在后 面定义。 10、已知类中的一个成员函数说明为:void Set (X &a)其中,X &a 的含义是 a 是类 X 的对象引用,用来作为 Set()的形参。 11、为了使类中的某个成员不被类的对象通过成员操作符访问,则不能把该成员 的访问权限定义为 public。 12、在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执 行其内部管理操作的函数是构造函数。 13、在 C++语言程序中,对象之间的相互通信通过调用成员函数实现。 14、类的具体表现是通过声明对象来操作的。 15、默认构造函数的函数体是空的。 一、填空题 第三章 1、函数重载是指两个或两个以上的函数具有相同的函数名,但参数类型不一致 或参数个数不同。 2、函数重载是 C++对 C 语言的扩展,包括非成员函数的重载和成员函数重载。 3、成员函数重载的一个很重要的应用就是重载构造函数。 4、通过对构造函数进行重载,可以实现定义对象时初始化赋值的多样性。 5、析构函数不能重载。(填可以或不能) 6、在函数调用时,若某个参数省略,则其后的参数皆应省略而采用默认值。 7、内联函数是一个函数,它与一般函数的区别是在使用时可以像宏一样展开, 所以没有函数调用的开销。 8、在内联函数体中,不能含有复杂的结构控制语句,如 switch 和 while 语句等。 9、在类内给出函数体定义的成员函数被默认为内联函数。 2
10、一个函数功能不太复杂,但要求被频繁调用,选用内联函数。 11、内联函数的关键字是 incline。 12、函数重载是指两个或两个以上的函数具有相同的函数名,但参数类型不一致 或参数个数不同。 13、函数重载是指两个或两个以上的函数具有相同的函数名,但参数类型不一致 或参数个数不同。 14、函数重载是指两个或两个以上的函数具有相同的函数名,但参数类型不一致 或参数个数不同。 15、在 C++中,设置参数默认值时,应当从右向左设置。 一、填空题 第十章 1、异常处理不仅提供了程序的容错性,还提供了各种捕获异常的方法。 2、如果函数内抛出一个异常,则在异常抛出时系统会自动退出所在函数的执行。 3、如不想在异常抛出时退出函数,可在函数内创建一个特殊块,用于测试各种 错误。 4、测试块作为普通作用域,由关键字 try 引导。 5、在 try 之后,根据异常的不同情况,相应的处理方法由关键字 catch 引导。 6、异常处理部分必须直接放在测试块之后。 7、如果在 try 块内没有发生异常,则直接转到所有 catch 块后的第一条语句执 行下去。 8、如果找到类型匹配的 catch 语句,进行捕获,其参数被初始化为指向异常对 象,执行相应 catch 内的语句模块 9、如果找不到匹配类型的 catch 语句,系统函数 terminate 被调用,终止程序。 10、如果任意层的异常处理器都没有捕获到异常(没有指定相应的 catch 块),称 为“未捕获异常”。 11、如有异常抛出,可以使用任意类型变量作为参数。 12、C++语言提供了异常接口声明语法,利用它可以清晰地告诉使用者异常抛出 的类型。 13、void f() throw(A,B,C,D); 表明此函数只能抛出 A、B、C、D 及其子类型异 3
常。 14、void f(); 表示能抛出任何一种异常。 15、void f() throw(); 表示不会有异常抛出。 完成程序题(15 题) 1、 有一个学生类 student,包括学生姓名、成绩,设计一个友元函数,比较两个学 生成绩的高低,并求出最高分和最低分的学生。 解: #include #include class student { char name[10]; int deg; public: student(char na[],int d) { strcpy(name,na); deg=d; } char *getname(){ return name;} friend int compare(student &s1,student &s2) { if(s1.deg>s2.deg) return 1; else if(s1.deg==s2.deg) return 0; else return -1; } }; void main() { student st[]={student("王华",78),student("李明",92),student("张伟",62),student("孙 强",88)}; int i,min=0,max=0; for(i=1;i<4;i++) { if(compare(st[max],st[i])==-1) max=i; else if(compare(st[i],st[min])==1) 4
min=i; } cout<<"输出结果:"< #include #include class student { char name[10]; int deg; char level[7]; public: student(char na[],int d) { strcpy(name,na); deg=d; } char *getname(){ return name;} friend void trans(student &s) { if(s.deg>=90) strcpy(s.level,"优"); else if(s.deg>=80) strcpy(s.level,"良"); else if(s.deg>=70) strcpy(s.level,"中"); else if(s.deg>=60) strcpy(s.level,"及格"); else strcpy(s.level,"不及格"); } void disp() { cout<
int i; student st[]={student("王华",78),student("李明",92),student("张伟",62),student("孙 强",88)}; cout<<"输出结果:"< class Car { private: int number; public: Car(int x) { number = x; } void SetNumber(int n) { number = n; } void display() { cout<SetNumber (20); p->display (); return 0; } 4、定义一个数组类,实现输入输出 #include class Array { public: Array(int num){ 6
Ptr=new int[num]; //申请能存放 num 个整型元素的内存空间 arraysize=num; } void SetArray() { } void Display() { int i; for(i=0;i #include class Point { private: int x; int y; public: Point(int xx,int yy){x=xx;y=yy;} friend double distance(Point &p1,Point &p2); }; double distance(Point &p1,Point &p2) { 7
double d; d=pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2); //pow 为幂函数 return sqrt(d); Point p1(3,4),p2(0,0); cout<<"二点之间的距离为:"< class A { private: void A(int n){k=n;} //2 ~A(int n){k=n;} int k; public: }//3 class B { private: //1 8
分享到:
收藏