11-C++经典面试100题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

传智播客cpp语言入门教程(11)讲师:尹成QQ:77025077博客:微博::yinc13@mails.tsinghua.edu.cn网址:语言传智播客笔试题目100条经典C++语言笔试题目题目类型C++与C差异(1-18)数据类型、关键字(19-37)C++面向对象的特性(38-61)程序阅读题(62-90)编程练习(比C要难)(91-100)100条经典C++语言笔试题目1、C和C++中struct有什么区别?【参考答案】Protection行为能否定义函数C无否,但可以有函数指针C++有,默认是private可以100条经典C++语言笔试题目2、C++中的struct和class有什么区别?【参考答案】从语法上讲,class和struct做类型定义时只有两点区别:(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。除了这两点,class和struct基本就是一个东西。语法上没有任何其它区别。100条经典C++语言笔试题目3、如何判断一段程序是由C编译程序还是由C++编译程序编译的?【标准答案】#ifdef__cpluspluscout“c++;#elsecoutc;#endif100条经典C++语言笔试题目4、C和C++有什么不同?【参考答案】从机制上:c是面向过程的(但c也可以编写面向对象的程序);c++是面向对象的,提供了类。但是,c++编写面向对象的程序比c容易。从适用的方向:c适合要求代码体积小的,效率高的场合,如嵌入式;c++适合更上层的,复杂的;llinux核心大部分是c写的,因为它是系统软件,效率要求极高。从名称上也可以看出,c++比c多了+,说明c++是c的超集;那为什么不叫c+而叫c++呢,是因为c++比c来说扩充的东西太多了,所以就在c后面放上两个+;于是就成了c++。C语言是结构化编程语言,C++是面向对象编程语言。C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。100条经典C++语言笔试题目5、“引用”与指针的区别是什么?【参考答案】指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。100条经典C++语言笔试题目6、classA{virtualvoidfunc1();voidfunc2();};classB:classA{voidfunc1(){coutfun1inclassBendl;}virtualvoidfunc2(){coutfun2inclassBendl;}}A,A中的func1和B中的func2都是虚函数B,A中的func1和B中的func2都不是虚函数.C,A中的func2是虚函数.,B中的func1不是虚函数.D,A中的func2不是虚函数,B中的func1是虚函数.【标准答案】A100条经典C++语言笔试题目7、intid[sizeof(unsignedlong)];这个对吗?为什么?【标准答案】正确这个sizeof是编译时运算符,编译时就确定了可以看成和机器有关的常量。100条经典C++语言笔试题目8、某文件中定义的静态全局变量(或称静态外部变量)其作用域是()?A.只限某个函数B.本文件C.跨文件D.不限制作用域【参考答案】B。静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。100条经典C++语言笔试题目9、C++函数中值的传递方式有哪几种?【标准答案】C++函数的三种传递方式为:值传递、指针传递和引用传递。100条经典C++语言笔试题目10、对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?【标准答案】c用宏定义,c++用inline100条经典C++语言笔试题目11、引用与指针有什么区别?【参考答案】1)引用必须被初始化,指针不必。2)引用初始化以后不能被改变,指针可以改变所指的对象。3)不存在指向空值的引用,但是存在指向空值的指针。100条经典C++语言笔试题目12、C++中virtual与inline的含义分别是什么?【参考答案】在基类成员函数的声明前加上virtual关键字,意味着将该成员函数声明为虚函数。inline与函数的定义体放在一起,使该函数称为内联。inline是一种用于实现的关键字,而不是用于声明的关键字。虚函数的特点;如果希望派生类能够重新定义基类的方法,则在基类中将该方法定义为虚方法,这样可以启用动态联编。内联函数的特点;使用内联函数的目的是为了提高函数的运行效率。内联函数体的代码不能过长,因为内联函数省去调用函数的时间是以代码膨胀为代价的。内联函数不能包含循环语句,因为执行循环语句要比调用函数的开销大。100条经典C++语言笔试题目13、VC中,编译工具条内的Debug与Release选项是什么含义?【参考答案】Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug带有大量的调试代码,运行时需要相应的运行库,发布模式程序紧凑不含有调试代码和信息,直接可以运行(如果不需要运行库)100条经典C++语言笔试题目14、函数assert的用法?【参考答案】断言assert是仅在debug版本起作用的宏,用于检查“不应该“发生的情况。程序员可以把assert看成一个在任何系统状态下都可以安全使用的无害测试手段。100条经典C++语言笔试题目15、const与#define的比较,const有什么优点?【参考答案】(1)const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。(2)有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。100条经典C++语言笔试题目16、请你谈谈引用和指针的区别。【参考答案】(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。100条经典C++语言笔试题目17、有了malloc/free为什么还要new/delete?【参考答案】malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。100条经典C++语言笔试题目18、如果在申请动态内存时找不到足够大的内存块,malloc和new将返回NULL指针,宣告内存申请失败。你是怎么处理内存耗尽的?【参考答案】(1)判断指针是否为NULL,如果是则马上用return语句终止本函数。(2)判断指针是否为NULL,如果是则马上用exit(1)终止整个程序的运行(3)为new和malloc设置异常处理函数。例如VisualC++可以用_set_new_hander函数为new设置用户自己定义的异常处理函数,也可以让malloc享用与new相同的异常处理函数。100条经典C++语言笔试题目19、C++是不是类型安全的?【参考答案】不是。两个不同类型的指针之间可以强制转换(用reinterpretcast)。100条经典C++语言笔试题目20、const符号常量;(1)constchar*p(2)charconst*p(3)char*constp说明上面三种描述的区别;【参考答案】(1)p是一个指向constchar的指针,p是可以改变指向的,但是p指向的值是不能改变的;(2)p指向的恰好是一个指向const的char的普通指针;(3)p是一个指针,这个指针是指向char的const指针。(1)和(2)的定义是一样的。100条经典C++语言笔试题目21、用C++写个程序,如何判断一个操作系统是16位还是32位的?【标准答案】定义一个指针p,打印出sizeof(p),如果节果是4,则表示该操作系统是32位,打印结果是2,表示是16位。100条经典C++语言笔试题目22、.用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数。【参考答案】inta=~0;if(a65536){cout32bitendl;}else{cout16bitendl;}100条经典C++语言笔试题目23、void*(*(*fp1)(int))[10];float(*(*fp2)(int,int,int))(int);int(*(*fp3)())[10]();分别表示什么意思?【标准答案】1.void*(*(*fp1)(int))[10];fp1是一个指针,指向一个函数,这个函数的参数为int型,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个void*型指针。100条经典C++语言笔试题目2.float(*(*fp2)(int,int,int))(int);fp2是一个指针,指向一个函数,这个函数的参数为3个int型,函数的返回值是一个指针,这个指针指向一个函数,这个函数的参数为int型,函数的返回值是float型。100条经典C++语言笔试题目3.int(*(*fp3)())[10]();fp3是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是int型。100条经典C++语言笔试题目24、多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?【标准答案】虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是实现多态的关键。100条经典C++语言笔试题目25、错误的转义字符是()A.'\091'B.'\\'C.'\0'D.'\'‘【标准答案】A100条经典C++语言笔试题目26、若数组名作实参而指针变量作形参,函数调用实参传给形参的是()A.数组的长度B.数组第一个元素的值C.数组所有元素的值D.数组第一个元素的地址【标准答案】D100条经典C++语言笔试题目27、变量的指针含意是指变量的()A.值B.地址C.存储D.名字【标准答案】B100条经典C++语言笔试题目28、内存的分配方式有几种?【参考答案】一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在

1 / 121
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功