面向对象及C复习题_第1页
面向对象及C复习题_第2页
面向对象及C复习题_第3页
面向对象及C复习题_第4页
面向对象及C复习题_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、面向对象与C+复习题一、 简答题1、 简述解释方式与编译方式。答:编译就是先有目标代码再执行; 解释就是一边翻译一边执行。解释方式是边扫描源程序、边进行翻译,然后执行。即解释一句、执行一句,不生成目标程序。这种方式运行速度慢,但在执行中可以进行人机对话,随时改正源程序中的错误。编译方式是将源程序全部翻译后,生成一个等价的目标程序,对目标程序再进行连接装配后,便得到“执行程序”,最后运行执行程序。由于源程序一旦编译后不再参与运行,以后每次直接运行执行程序即可,所以运行速度快。但这种方式不够灵活,每次修改源程序后,哪怕只是一个符号,也必须重新编译、连接;2、 简述面向过程的程序设计与面向对象的程序

2、设计。面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。结构化程序设计又称为面向过程的程序设计。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。3、 什么是拷贝构造函数。是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。拷

3、贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。4、 重写与重载的区别。方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方

4、法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。5、 动态绑定与静态绑定。静态绑定:在面向过程的中又称为前期绑定在程序编译时进行了绑定,即在还没运行时,就已经加载到内存。 3.动态绑定:在面向过程中称为后期绑定(运行时绑定)在运行时就进行绑定,根据实际情况有选择的进行绑定。6、 传值、传指针与传引用的优缺点。答:传值安全低效,传指针与传引用高效不安全,如果加上CONST就安全了。7、 将函数声明为常成员函数的作用。不可修改成员,即对声明为const 的成员作改动就会报错,容易发现问题8、 构造新类时,使用组合与继承的原则是什么。答:构造新类时,例如A是基类

5、,B是A的派生类,继承的原则如下:1.如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能和属性,2.若在逻辑上B是A的“一种”,则允许B继承A的功能和属性。组合的原则如下:1.若在逻辑上B是A的“一部分”,则不允许B从A的派生,而是要A与其它东西组合出B。9、 内联函数的作用。答:内联函数就是指在每个使用它的地方插入全部算法,而不是把函数地址传过去,它是编译在堆内存里的,直到程序结束后它才失效,这样能加快执行的速度,效率更高,但是内联函数一定要是短小的,否则只能起到反作用.10、 抽象类。答:用 abstract 修饰的类是抽象类。 在C+中,含有纯虚拟函数的类称为抽象类,它

6、不能生成对象。 凡是包含纯虚函数的类都是抽象类。它与非抽象类的不同: 1、抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。 2、允许(但不要求)抽象类包含抽象成员。 3、抽象类不能被密封。二、 选择题1、编译程序的功能是(c )A)将汇编语言程序转换为目标程序B)将汇编语言程序转换为高级语言程序C)将高级语言程序转换为目标程序D)将高级语言程序转换为汇编语言程序2、在C+语言中,对函数参数默认值描述正确的是( d ) A)函数参数的默认值只能设定一个B)一个函数的参数若有多个,则参数默认值的设定可以不连续 C)函数参数必须设定默认值D)在设定了参数的默认值后,该参数后面定义

7、的所有参数都必须设定默认值3、考虑函数原型void test(int a, int b=7, float f=6.0),下面的函数调用中,属于不合法调用的是:( c )A)test(5);  B)test(5,8); C)test(6 ,3.2)  D)test(0,1,1.2);4、下面有关重载函数的说法中正确的是( c ) A)重载函数必须具有不同的返回值类型;B)重载函数形参个数必须不同; C)重载函数必须是参数个数不同或类型不同;D)重载函数名可以不同; 5、能作为函数重载判断依据的是:( a )    A

8、参数个数   B。参数顺序  C。函数名字   D。返回类型6、下列关于构造函数的描述中,错误的是( d ) A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行 C)构造函数可以是内联函数;D)构造函数不可以重载 7、关于析构函数的描述中,错误的是( c )A)析构函数不能带参数B) 析构函数在撤销对象时自动执行 C)析构函数名与类名相同; D) 析构函数不可以重载8、下面描述中,表达错误的是( b ) A)公有继承时基类中的public成员在派生类中仍是public的 B)公有继承是基类中的private成员在派生类中仍是pri

9、vate的 C)公有继承时基类中的protected成员在派生类中仍是protected的 D)私有继承时基类中的public成员在派生类中是private的 9、应在下列程序划线处填入的正确语句是( c ) A)fun();  B)Base.fun();  C)Base:fun();  D) Base->fun(); 10、一个C+类( c )A)只能有一个构造函数和一个析构函数 B)可以有一个构造函数和多个析构函数C)可以有多个构造函数和一个析构函数D)可以有多个构造函数和多个析构函数11、以下程序中,while循环的循环次数是( d ) A)

10、 1 B) 10 C) 6 D) 死循环,不能确定次数12、关于内联函数,以下说法错误的是( c )A)使用内联嵌函数可节省函数调用与返回时的开销,能够提高程序的运行速度.B) 内联函数必须在调用之前定义.C) 内联函数中可以存在循环结构.D) 内联函数必须是短小的.13、引入友元的主要目的是为了( c )A. 增强数据安全性 B. 提高程序的可靠性C. 提高程序的效率和灵活性 D. 保证类的封装性14、假定AB为一个类,则执行AB x;语句时将自动调用该类的(b )A. 有参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数15、一个const对象( b )。 A. 能访问

11、所有成员函数 B. 只能访问const成员函数C. 也能访问volatile成员函数D. 能访问const和volatile成员函数三、 填空题1、C+源程序文件扩展名为_.cpp_2、面向对象的特征是封装、继承和 多态 。3、采用malloc函数申请的内存,采用 free 释放;new操作符申请的内存,采用 delete 释放。4、在C+中,函数的参数传递的方式有传值、传指针和 传引用 。 5、类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的_数据成员_,共同行为被描述为类中的_成员函数_。6、对类中的成员函数和属性的访问是通过_public_、_proecte

12、d_和_private_这3个关键字来控制的。7、用关键字 public 控制的成员是类的接口。8、在定义类的对象时,C+程序将自动调用该对象的_构造_函数初始化对象自身。9、在撤销类的对象时,C+程序将自动调用该对象的_析构_函数。10、非成员函数应声明为类的_友员_才能访问这个类的private和protected成员。11、补充完整以下程序,使其输出 10。class MyClasspublic: MyClass ( int i ) x = i ; int getNum()constreturn x; /获取xprivate: int x;void main() MyClass my(1

13、0);cout << my.getNum() << endl;12、class testprivate:int num; float f; public: test(int n,float f); test(test&);test:test(int n,float f) num=n; this->f=f ;test:test( test& t ) num=t.num ; f=t.f;四、 读程序,找错误,并说明原因。1、class A public:static void f(A a);private:int x;void A:f(A a) cou

14、t << x; /错误,x的地方是非静态的,静态的成员只能操作静态的成员cout << a.x; 2、class A protected:int x;int main() A a;a.x = 5; /错误,x是保护成员,对外不可访问3、class Apublic: void A(int i=0)m=i; 错,构造函数不能返回值。 void show()cout<<m; void A() 错,构造函数不能返回值private: int m;void main() A a(5); a.m+=10; 错,构造函数不能返回值 a.show(); 五、 读程序,写结果

15、。1、/n=102、/i=0 k=2 m=43、/ i=10 d=15.64、Point构造函数 Cirlce构造函数 Circle析构函数 Point析构函数5、base写2次,写1次。(base:fun base:fun devide:fun)六、 编程题1、编写程序,输出100以内的能被3和7同时整除的所有整数。#include <iostream.h>void main()int i; for(i=1;i<=100;i+) if(i%3=0&&i%7=0) cout<<i<<endl;2、编写一个矩形类,要求可以提示用户输入矩形

16、的长度和宽度,并显示该矩形的长度、宽度和面积。#include <iostream.h>class rectange private: int len; int wid; public: rectange(int a,int b):len(a),wid(b) int getLen()return len; int getwid()return wid; friend int area(rectange T);int area(rectange T) int s; s=T.len*T.wid; return s;int fun(rectange T) int l; l=(T.getL

17、en()+T.getwid()*2; return l;int main() rectange a(5,7); cout<<"nT对象面积为:"<<area(a); cout<<"nT对象周长为:"<<fun(a); return 0; 3、下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数。请从shape类派生三角形类(triangle)、圆类(circle),并给出具体的求面积函数。class shapepublic:virtual float area( )=0; ;class

18、Triangle:public Shapepublic:Triangle(double h,double w)H=h;W=w;double Area() constreturn H*W*0.5;private:double H,W;4、以下是复数类Complex的定义。class Complex /复数类声明public:Complex(double r = 0.0,double i = 0.0) real = r; imag=i; Complex operator + (const Complex &c2) const;/+重载成员函数Complex operator - (const Complex &c2) const;/-重载成员函数friend ostream & operator << (ostream &out, const Compl

温馨提示

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

评论

0/150

提交评论