C和C++笔试题基础

C和C++笔试题基础

ID:40713943

大小:26.27 KB

页数:10页

时间:2019-08-06

C和C++笔试题基础_第1页
C和C++笔试题基础_第2页
C和C++笔试题基础_第3页
C和C++笔试题基础_第4页
C和C++笔试题基础_第5页
资源描述:

《C和C++笔试题基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、16. 关联、聚合(Aggregation)以及组合(Composition)的区别?关联是表示两个类的一般性联系,比如“学生”和“老师”就是一种关联关系;聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责,如下图所示,用空的菱形表示聚合关系:从实现的角度讲,聚合可以表示为:classA{...} classB{A*a;.....}组合表示contains-a的关系,关联性强于聚合:组合类与被组合类有相同的生命周期,组合类要对被组合类负责,采用实心的菱形表示组合关系:实现的形式是:classA{...}classB

2、{Aa;...} 17.面向对象的三个基本特征,并简单叙述之?1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private,protected,public)2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。3. 多态:系统能够在运行时,能够根据其类型确定调用哪个重载的成员函数的能

3、力,称为多态性。(见:C++中类的多态与虚函数的使用)18. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。重写:是指子类重新定义父类虚函数的方法。重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:functionfunc(p:integer):integer;和functionfunc(p:string)

4、:integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),重载和多态无关!重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,函数调用在编译期间是无法确定(调用的子类的虚函数的地址无法给出)。函数地址是在运行期绑定的(晚绑定)。 20.Ado与Ado.net的相同与不同?除了“能够让应用程序处理存储于DBMS中的数据“这一基本相似

5、点外,两者没有太多共同之处。但是Ado使用OLEDB接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。众所周知.NET体系不同于COM体系,ADO.NET接口也就完全不同于ADO和OLEDB接口,这也就是说ADO.NET和ADO是两种数据访问方式。ADO.net提供对XML的支持。21. Newdelete 与mallocfree 的联系与区别?答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new会自动调用对象的构造函数。

6、delete会调用对象的destructor,而free不会调用对象的destructor.(可以看看:显式调用构造函数和析构函数)23. 有哪几种情况只能用intializationlist 而不能用assignment?答案:当类中含有const、reference成员变量;基类的构造函数都需要初始化表。 24. C++是不是类型安全的?答案:不是。两个不同类型的指针之间可以强制转换(用reinterpretcast)。C#是类型安全的。 25. main 函数执行以前,还会执行什么代码?答案:全局对象的构造函数执行,为malloc分

7、配资源,等等。 26. 描述内存分配方式以及它们的区别?1) 从静态存储区域分配。内存在程序编译时已分配好,整个运行期间都存在。如全局变量,static 变量。2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时存储单元自动被释放。栈内存分配运算内置于处理器的指令集。3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。4)代码区。  28.当一个类A 中没有生命任何成员变量与成员函数,这时sizeof(A)的

8、值是多少,如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk)答案:肯定不是零。举个反例,如果是零的话,声明一个classA[10]对象数组,而每一个对象占用的空间是零,这时就

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。