面向对象与C复习题

上传人:鲁** 文档编号:508010789 上传时间:2023-07-01 格式:DOC 页数:6 大小:40.51KB
返回 下载 相关 举报
面向对象与C复习题_第1页
第1页 / 共6页
面向对象与C复习题_第2页
第2页 / 共6页
面向对象与C复习题_第3页
第3页 / 共6页
面向对象与C复习题_第4页
第4页 / 共6页
面向对象与C复习题_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《面向对象与C复习题》由会员分享,可在线阅读,更多相关《面向对象与C复习题(6页珍藏版)》请在金锄头文库上搜索。

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、考虑函数原型voidtest(inta, intb=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参数个数 B。参数顺序 C。函数名字 D。返回类型6、下列关于构造函数的描述中,错误的是( d

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

9、的 9、应在下列程序划线处填入的正确语句是( c ) A)fun(); B)Base.fun(); C)Base:fun(); D)Base-fun(); 10、一个C+类( c )A)只能有一个构造函数和一个析构函数 B)可以有一个构造函数和多个析构函数C)可以有多个构造函数和一个析构函数D)可以有多个构造函数和多个析构函数11、以下程序中,while循环的循环次数是( d ) A) 1 B) 10 C) 6 D) 死循环,不能确定次数12、关于内联函数,以下说法错误的是( c )A)使用内联嵌函数可节省函数调用与返回时的开销,能够提高程序的运行速度.B) 内联函数必须在调用之前定义.C)

10、内联函数中可以存在循环结构.D) 内联函数必须是短小的.13、引入友元的主要目的是为了( c )A. 增强数据安全性 B. 提高程序的可靠性C. 提高程序的效率和灵活性 D. 保证类的封装性14、假定AB为一个类,则执行AB x;语句时将自动调用该类的(b )A. 有参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数15、一个const对象( b )。 A. 能访问所有成员函数 B. 只能访问const成员函数C. 也能访问volatile成员函数D. 能访问const和volatile成员函数三、 填空题1、C+源程序文件扩展名为_.cpp_2、面向对象的特征是封装、继承

11、和 多态 。3、采用malloc函数申请的内存,采用 free 释放;new操作符申请的内存,采用 delete 释放。4、在C+中,函数的参数传递的方式有传值、传指针和 传引用 。5、类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的_数据成员_,共同行为被描述为类中的_成员函数_。6、对类中的成员函数和属性的访问是通过_public_、_proected_和_private_这3个关键字来控制的。7、用关键字 public 控制的成员是类的接口。8、在定义类的对象时,C+程序将自动调用该对象的_构造_函数初始化对象自身。9、在撤销类的对象时,C+程序将自动调用该对象的_析

12、构_函数。10、非成员函数应声明为类的_友员_才能访问这个类的private和protected成员。11、补充完整以下程序,使其输出 10。class MyClasspublic: MyClass ( int i ) x = i ; int getNum()constreturn x; /获取xprivate: int x;void main() MyClass my(10);cout my.getNum() f=f ;test:test( test& t ) num=t.num ; f=t.f;四、 读程序,找错误,并说明原因。1、class A public:static void f(

13、A a);private:int x;void A:f(A a) cout 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()coutm; void A() 错,构造函数不能返回值private: int m;void main() A a(5); a.m+=10; 错,构造函数不能返回值 a.show(); 五、 读程序,写结果。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 void main()int i; for(i=1;i=100;i+) if(i%3=0&i%7=0) coutiendl;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号