C++面试题(基础)
const符号常量:(1)、const char *p(2)、char const *p(3)、char * const p如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指
1. const 符号常量: 1constchar*p ()、 2charconst*p ()、 3char*constp ()、 constconst 如果位于星号的左侧,则就是用来修饰指针所指向的变量,即指针指向为 常量。 constconst 如果位于星号的右侧,就是修饰指针本身,即指针本身是常量。 2. 析构函数和虚函数的用法和作用? 析构函数的作用是当对象生命期结束时释放对象所占用的资源。析构函数用法:析构函 数是特殊的类成员函数 它的名字和类名相同,没有返回值,没有参数不能随意调用也没有重载。只是在类对象 生命期结束时有系统自动调用。 虚函数用在继承中,当在派生类中需要重新定义基类的函数时需要在基类中将该函数声 明为虚函数,作用为使程序支持动态联遍。 3. 堆和栈的区别 stack 栈():由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方 式类似于数据结构中的栈。 OS 堆:一般由程序员分配释放,若不释放,程序结束时可能由回收。注意它与数据结 构中的堆是两回事,分配方式类似。 4. 头文件的作用是什么? 一、 通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要 向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用 库功能,而不必关心接口怎么实现的。编译器会从库中提取出相应的代码。 二、 头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中 的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改 错的负担。 5. 内存的分配方式有几种? 一、 从静态存储区域分配。内存在程序编译的时候已经分配好,这块内存在程序的整个 运行期间都存在。如全局变量。 二、 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数 执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中, 效率高,但是分配的内存容量有限。 三、 mallocnew 从堆上分配,亦称动态内存分配。程序在运行的时候用或申请任意多 freedelete 少的内存,程序员自己负责在何时用或释放内存。动态内存的生存期 由我们决定,使用非常灵活。 6. BOOLfloatif 、、指针变量与“零值比较的语句”。 BOOL:If(flag)if(!flag) 或 Float:constfloatEPSINON=0.00001; If((x>=.EPSINON)&&(x<=EPSINON)) 说明:不可将浮点变量用“==”或“!=”与 >=<= 数字比较,应该设法转化成“”或“”此类形式。 *pif(p==NULL)if(p!=NULL) 指针: 7. WindowsNT32C++sizeof 以下为下的位程序,请计算的值 Charstr[]=“Hello”; Char*p=str;

