近期出现的C++面试题整理(附详细答案)_第1页
近期出现的C++面试题整理(附详细答案)_第2页
近期出现的C++面试题整理(附详细答案)_第3页
近期出现的C++面试题整理(附详细答案)_第4页
近期出现的C++面试题整理(附详细答案)_第5页
免费预览已结束,剩余52页可下载查看

下载本文档

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

文档简介

第一部分:简单的回答1.在c下,单击static_cast和dynamic_cast之间的区别。答:static_cast用于具有相对明确定义的转换,包括不需要强制转换的转换。Dynamic_cast适用于类型安全性的向下转换,在继承中通常用于从父类指针到子类指针的转换。如果转换成功,则返回指向修改类型的指针;如果转换失败,则返回NULL。1.Struct和class之间的差异。答:struct是结构类型的表示法,与c中的类非常相似。c的唯一区别是,在Class定义中,默认情况下成员是私有的,在结构Struct定义中,默认情况下成员是公共的。在c中,结构不能有成员函数,而c可以有成员函数。1.如果在父类中编写了virtual函数,并且子类中复盖该函数的函数不是virtual,是否可以实现多态?答:虚拟修改器是不可见地继承的。Private也会继承,但是衍生类别没有存取权。Virtualcenter可以添加,也可以添加。子类中的空间具有父类(static除外)中的所有变量。只有一个实体(Inline除外)存在于同一函数中。子类复盖该函数的函数不是虚拟函数,还可以实现多态。子类的空间具有父类的专用变量。不能直接访问私有变量。1.c和c的区别是什么?(在机制、应用领域等方面发言)答:机制:c是面向流程的,但c还可以编写面向对象的程序。c是面向对象的,提供类。但是,c比c更容易编写面向对象的程序适用方向:c适用于嵌入式等代码较小、效率高的情况。c上层,复杂;雷克萨斯核心大部分是用c编写的,因为作为系统软件,效率要求很高。顾名思义,c比c多,c是c的超集;那么不叫c,叫c的原因是c比c扩展的东西太多,所以在c后面放了两个;所以变成了cc语言是结构化编程语言,c是面向对象的编程语言。c侧重于对象而不是过程,侧重于类的设计而不是逻辑设计。1.您能告诉我const与#define相比有什么好处吗?回答:1)const常量有数据类型,而宏常量没有数据类型。编译器可以进行电子的类型安全检查。后者仅执行字符替换而不进行类型安全检查,字符替换可能会导致意外错误。2)某些集成调试工具可以调试const常量,但不能调试宏常量。1.简要说明阵列和指标之间的差异吗?答:数组是在静态存储(如全局数组)中创建的,还是在堆栈中创建的。指针可以随时指向任何类型的内存块。(1)修正内容的差异chara= hello ;a0= x ;Char * p= world/p指常量字符串p0= x ;/编译器找不到错误。运行时错误(2)可以使用sizeof运算符计算数组的容量(字节)。Sizeof(p),p表示指针变量的字节数,而不是p指向的内存容量。C /C语言无法确定指针指向的内存容量,除非内存请求时记忆。数组作为函数的参数传递时,数组会自动降级为相同类型的指针。chara= hello world ;char * p=a;Cout接口继承和纯虚拟函数)构成了功能重用的两种方式。3.多态:将父对象设置为与一个或多个子对象相同的技术,通过分配值,父对象可以根据当前分配的子对象的特性以不同方式运行。简单地说,允许您将子类类型的指针分配给父类类型的指针的句子。9.请简要说明如何管理Windows内存。回答:内存管理是操作系统的重要组成部分,两三句话恐怕没有人能说清楚 我先大致说一下。希望能扔砖头引玉程序运行时,必须从内存中读取此程序的代码。代码的位置必须在物理内存中运行。虚拟内存的概念继续存在,因为当前操作系统上运行了很多程序,无法完全从内存中释放出来。将不经常使用的程序片段放入虚拟内存,必要时将其加载到主内存(物理内存)中。这就是内存管理要做的。内存管理需要执行另一项任务来计算主内存中程序段的物理位置,以便安排CPU。内存管理包括基于块的管理、基于页面的管理以及基于段和段页的管理。现在,基于常用段页面的管理基于块的管理:将主资料档案库分为一个大块、一个大块、当主资料档案库中不存在所需的程序片段时分配一个主存储空间,并将程序片段加载到主存储空间中。即使所需的程序片段数只有几个字节,也只能将此片段分配为一个字节。这将产生相当大的浪费,平均浪费50%的内存空间,但这样更易于管理。基于页面的管理:将主存储库划分为多个页面,每个页面的空间比一块小得多。显然,此方法的空间利用率远高于基于块的管理。基于段的管理:将基础资料档案库划分为一个段,每个段的空间比一页的空间小得多。此方法在空间利用率上比基于页面的管理高得多,但还有另一个缺点。计算每个段的物理地址可以分为几十个段,这可能会浪费大量时间(我知道计算机消耗的时间最多的是I/O)。基于段页的管理:结合基于段的管理和基于页的管理的优点。把主区分成几页,每页又分成几段。好处很明显。不用多说。所有内存管理都有唯一的方法来计算程序片断的物理地址。这只是大概,不足以说明内存管理的皮毛。任何操作系统书都有详细说明10.main基本函数运行完成后,提供说明的代码段是否可以运行更多?答:是的。_onexit用于注册在main之后运行intfn1 (void)、fn2 (void)、f03 (void)、fn4 (void)的函数。Voidmain(void)string str(“zhanglin”);_ ons exit(f91);_ ons exit(f02);_ ons exit(f93);_ ons exit(f94);printf(“Thisisexecutedfirst . n n );Intfn1()printf(“next . n );Return0Intfn2()printf(“executed”);Return0Intfn3()printf(“is”);Return0Intfn4()printf(“this”);Return0Csdn文档摘要:the _ onexitfunctionispassedheaderfafunction(func)tobecaalledwhentheprogramterminatesnorally . succssivecallsto _11.const符号常数;(1)constchar*p(2)charconst*p(3)char*constp请说明上述三种解释的区别。回答:如果Const位于星号的左侧,则const用于修改指针指向的变量。也就是说,指针用于指向常量。如果Const位于星号的右侧,则const是修饰指针本身。换句话说,指针本身就是常数。(1)constchar*pChar类型的const物件指标;p不是常数。可以修改p的值以指向其他char,但不能更改为指向非char对象,如下所示:constchar * p;Charc1= aCharc2= bP=c1/okP=c2/ok* p=c1/error(3)char*constp此时,可以修改*p,但不能修改p。(4)constchar*constp这是地址,不能修改对象。以下是c语言的两种if语句判断方法。哪个书法更好?怎么了?回答:IntnIf(n=10)/第一种判断方法If(10=n)/第二种判断方法个=编号越少,编译时报告错误,可能发生错误的行越少,因此可以检测到数量越少=13.*p自增量p或p指向的变量?:后缀和运算符的优先级本质上高于前缀,因此*p和*(p)将p自身增加,并返回p自身增加之前指向的值。使用(*p)自行增加p指向的值,如果副作用的顺序不重要,也可以使用*p。14.#pragma是什么,它有什么用?:#pragam指令提供了多种(不可移植的)与实施相关的控制和扩展:提供了一个明确定义的“救生圈”源代码表控制、结构压缩、警告删除(lint中的旧/*NOTREACHED*/注释等)。15.“# pragma once”是什么意思?我在一些头文件中看到了它。:这是一些预处理器实现扩展,使头文件能够自我识别。#与ifndef技术相同,但移植性差。16.进程间通信方法是什么?回答:进程间通信包括共享内存、管道、套接字、消息队列、DDE等17.如何打印当前源文件的文件名和源文件的当前行号?回答:Cout _ _ FILE _ _Cout _ _ LINE _ _FILE_和_LINE_不是在文件中定义的,而是由编译器定义的系统预定义宏。18.如何知道程序是由c还是c编译程序编译的?A: #ifdef_cpluspluscout“c”;#elsecout“c”;#endif19.Newdelete和mallocfree之间的关联性和差异?回答:在堆中执行动态内存操作。Malloc函数需要指定分配内存的字节数,如果无法初始化对象,new会自动调用对象的构造函数。Delete调用对象的destructor,free调用对象的destructor .20.介绍详细说明STL如何实现vector的STL。:STL(标准模板库)由容器算法迭代器组成。STL具有以下几个优点:可以轻松实现一系列算法,以便于检索或排序数据。调试程序更安全、更方便。即使STL是在UNIX平台上以STL编写的代码(因为STL是跨平台的),也很容易理解。Vector本质上是动态数组,它根据数据增长动态增加数组空间。21.指针和引用之间有什么区别?如果路径参照比路径指标安全,为什么?不能使用常量指针吗?回答:(1)参照必须在建立时初始化。也就是说,它被引用为有效对象。定义指针时不必初始化,可以在定义后的任意位置重新指定值。(2)没有空引用。引用必须与正确的存储设备相关联。指针可以为空。(3)参考初始化为指向一个物件后,无法变更为另一个物件的参考。您可以随时更改指针以指向其它对象。为参照指定值并不更改与原始对象的绑定关系。(4)创建和销毁引用不调用类的复制构造函数(5)语言水平、参考使用和对象;在二进制级别,引用通常由指针组成,但编译器可以帮助转换。没有空引用,并且如果初始化引用以指向一个对象,则无法更改到另一个对象的引用,因此很安全。Const指针仍然作为空指针存在,并可能生成野生指针。一般来说,参照既有指针的效率,也有变量使用的方便性和直觉性。构造函数可以是虚拟汗液。为什么?分析函数,可以是纯虚拟的吗?回答:构造函数不能是虚拟函数,要构造对象,必须清楚要构造的内容。否则,将无法组织对象。析构函数可以是纯虚拟函数。:的第二部分阅读判断问题

温馨提示

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

评论

0/150

提交评论