ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:130.54KB ,
资源ID:7837650      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7837650.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c++经典面试题文档格式.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

c++经典面试题文档格式.docx

1、从机制上:c是面向过程的(但c也可以编写面向对象的程序);c+是面向对象的,提供了类。但是,c+编写面向对象的程序比c容易。 从适用的方向: c适合要求代码体积小的,效率高的场合,如嵌入式; c+适合更上层的,复杂的; linux核心大部分是c写的,因为它是系统软件,效率要求极高。从名称上也可以看出,c+比c多了+,说明c+是c的超集;那为什么不叫c+而叫c+呢,是因为c+比 c来说扩充的东西太多了,所以就在c后面放上两个+;于是就成了c+。C语言是结构化编程语言,C+是面向对象编程语言。 C+侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。关于这个问题,个人觉得Effective C+

2、上面第一条说的很好,View C+ as a federation of languages。 把C+当做一个语言联邦。C+由四部分组成 c语言部分; 面向对象部分,包括封装、继承、多态这些C语言所没有的特性;3 泛型编程部分,大多数类、函数要考虑到把它设计成模板,方便复用;4 STL库,里面封装了大量的优秀模板,是 3 中内容的集成, 学会使用它们可以让代码更高效。当然,最好去深入了解STL源码,那样会对C+有更深的理解。5.“引用”与指针的区别是什么?指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是

3、对目标变量的操作。在另一本C+著作More Effective C+里,第一条就是论述 point 和 reference的区别总结一下 , 指针是一个存储地址的变量,而引用是一个变量的别名。所以在一个函数中,传引用要比传指针速度更快。2 指针可以指向一个空值,而引用必须初始化。指针可以如下形式出现cpp view plain copy1.intp;是合法但不合理的(相当于是一个野指针)。可以声明一个指向空值的指针cpp view plain copy*p=null而引用不行&r;是错误的引用必须初始化为一个变量的别名,如a=5;2.intr=a; 也是因为 2的特性,指针在使用前要判断是否为

4、空,而引用必定不为空(否则会报错),所以不用判断。4 指针可以更改指向的内存地址,而引用是和变量绑定的,不可更改。5 在运算符重载过程中,通常返回一个引用往往比返回一个指针更好,使用指针易引起语义上的歧义.6.class A virtual void func1();void func2(); ;class B: class Avoid func1()cout fun1 in class B” endl; virtual void func2()cout fun2 in class B 65536)3.4.cout”32bitendl;5.6.else7.8.cout生命周期不同:全局变量随主

5、程序创建而创建,随主程序销毁而销毁;内存中分配在全局数据区。局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在; 分配在栈区。使用方式不同:通过声明后全局变量程序的各个部分都可以用到;局部变量只能在局部使用;操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面 。另,全局变量会被初始化为0,而局部变量以随机值进行初始化31。Heap与stack的差别Heap是堆,stack是栈。Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。Stack空间有限,Heap是很大的自由存储区C中的mall

6、oc函数分配的内存空间即在堆上,C+中对应的是new操作符。程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行32。In C+, what does explicit mean? what does ”protected mean?c+中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,在某些情况下,我们要求类的使用者必须显示调用类的构造函数时就需要使用explicit,反之默认类型转换可能会造成无法预期的问题。protected控制的是一个函数对一个类的成员(包括成员变量及成员方法)的访问权限。protected成员只有该类的成

7、员函数及其派生类的成员函数可以访问。我擦!它俩为啥放在一起问.33。重复多次fclose一个打开过一次的FILE fp指针会有什么结果,并请解释。【参考答案】考察点:导致文件描述符结构中指针指向的内存被重复释放,进而导致一些不可预期的异常。34.为什么数组名作为参数,会改变数组的内容,而其它类型如int却不会改变变量的值?【参考答案】当数组名作为参数时,传递的实际上是地址.而其他类型如int作为参数时,由于函数参数值实质上是实参的一份拷贝,被调函数内部对形参的改变并不影响实参的值。传值与传地址的区别35.你觉得如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?(1) 程序的可读性(

8、可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么.在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。(3) 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。36。为什么需要使用堆,使用堆空间的原因?【参考答案】直到运行时才知道一个对象需要多少内存空间;不知道对象的生存期到底有多长。因为需要动态分配内存啊。37。const关键字?有哪些作用【参考答案】const关键字至少有下列n个作用:(1)欲阻止一个变量被改变,可以使用const关键字.在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;(2

9、)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;(这样既可以利用传地址、传引用的高效特性,又保证了传值的安全性)(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;还记得如果要修改成员变量,应该把成员变量声明为什么吗?mutable!(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值更多更详细的内容,推荐看Effective C+38。、是不是一个父类写了一个v

10、irtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?【参考答案】virtual修饰符会被隐形继承的。virtual可加可不加。子类的空间里有父类的所有变量(static除外)。同一个函数只存在一个实体(inline除外)。子类覆盖它的函数不加virtual ,也能实现多态。在子类的空间里,有父类的私有变量。私有变量不能直接访问.不过最好是加上,加上表明它是一个虚函数,这样提高了代码的阅读性.39。面向对象的三个基本特征,并简单叙述之?1。 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private,protected,public) 2。

11、 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=接口继承以及纯虚函数)构成了功能复用的两种方式。 3。 多态:是将父对象设置成为和一个或更多的与他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针.40。重载(overload)、重写(override,有的书也叫做“覆盖”)、重定义(redefinition)的区别?41

12、.多态的作用?主要是两个:1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用; 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用.42.当一个类A 中没有声明任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。【标准答案】sizeof(A)= 1;编译器不允许一个类的大小为0,会为它分配1字节的内存.试想,若,不这样做,那2个类A的实例在内存中将会无法区分。43.如果Class A中定义并实现虚函数int func(void),Class B中也实现该函数,那么1.Aa;2.a-func()将调用哪个类里面的函数?如果int fun

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2