C++面试必备:经典面试题解析

需积分: 24 25 下载量 58 浏览量 更新于2024-07-24 收藏 1.06MB PDF 举报
"这份PDF是针对C++面试的经典问题集,包含了26页的面试题,涵盖了许多核心的C++概念和技术,旨在测试面试者对于C++语言的深入理解和应用能力。" 在C++中,变量的声明和定义是两个不同的概念。声明变量主要是告诉编译器变量的类型和名字,但不分配存储空间。例如,`extern int x;`就是一个声明,它告诉编译器有一个整型变量x,但并不创建这个变量。定义则是分配存储空间并初始化变量,如`int x = 10;`。一个变量可以多次声明,但只能定义一次。extern关键字用于声明一个变量已在其他地方定义。 面试题2涉及到不同类型的变量与“零值”比较。在C++中,布尔型bool通常用`if(flag)`来判断,其中`flag`为真(非零)时执行A,否则执行B。对于int型,通常使用`if(0!=flag)`以防止将赋值操作误写成比较操作。指针变量与NULL(或nullptr在C++11之后)比较,如`if(NULL==flag)`。对于float型,需要确保在比较时不因浮点误差导致误判,一般会设置一个范围,如`if((flag>=NORM)&&(flag<=NORM))`。 面试题3讨论了sizeof和strlen的区别。sizeof是C++中的一个操作符,它在编译时就确定了数据类型或变量的大小,例如`sizeof(int)`会返回int类型占据的字节数。而strlen是一个函数,它用于计算以'\0'为结束符的字符串的长度,如`strlen("hello")`会返回5。sizeof处理数组时不会丢失数组的信息,而strlen接收数组时会将其视为指针。 面试题4提到了C和C++中static关键字的差异。在C中,static用于创建局部静态变量(其生命周期贯穿整个程序运行),以及外部静态变量(作用域限制在声明它的文件内)。而在C++中,static还可以用于定义静态成员变量和静态成员函数,它们属于类而非类的实例,这意味着所有类对象共享同一份静态成员变量的值,而静态成员函数可以访问这些变量,但不具有this指针。 这些面试题覆盖了C++的基础语法、类型比较、运算符特性和关键字的应用,是理解C++语言特性和编程技巧的重要考察点。在准备C++面试时,理解和掌握这些问题的答案对于展示自己的专业技能至关重要。