C++基础面试知识点解析

版权申诉
0 下载量 48 浏览量 更新于2024-07-18 收藏 28KB DOCX 举报
"C++基础面试题包含了常量指针、析构函数与虚函数、堆栈内存、头文件作用以及内存分配方式等多个核心知识点。" 在C++编程中,了解和掌握这些基本概念对于面试和实际开发至关重要。 1. const符号常量: const常量可以修饰不同类型的数据,例如char、int等。在指针相关的const用法中,主要分为三种情况: - `const char *p`:指针p可以改变,但p指向的字符不可修改。 - `char const *p`:与上面相同,常量修饰的是指针所指向的内容。 - `char *const p`:指针p本身是常量,即不能改变p指向的位置,但p指向的字符可以修改。 2. 析构函数和虚函数: - **析构函数**:当对象生命周期结束时自动调用,用于清理对象占用的资源。它无返回值,无参数,不能主动调用,也不可重载。是类的一个特殊成员函数,其名称与类名相同,前缀一个波浪线(~)。 - **虚函数**:在多态性中发挥关键作用。基类中声明为虚函数的函数可以在派生类中重定义,确保在动态绑定时调用到正确的函数。这样,即使基类指针指向派生类对象,也能正确执行派生类的版本。 3. 堆和栈的区别: - **栈**:由编译器自动管理,主要用于存储函数参数和局部变量,具有快速分配和释放的优势,但空间有限。 - **堆**:由程序员手动管理,通过malloc/new申请,free/delete释放。堆内存分配灵活,但管理不当可能导致内存泄漏。 4. 头文件的作用: - 头文件`.h`或`.hpp`通常包含函数声明、宏定义、枚举类型等,它们提供给其他源文件调用。使用头文件可以隐藏实现细节,增强类型安全,当接口使用不当时,编译器会报错。 5. 内存分配方式: - **静态存储区域**:全局变量、静态变量在此分配,它们在整个程序运行期间都存在。 - **栈内存**:函数内的局部变量在此分配,函数执行完毕后自动释放。 - **堆内存**:使用malloc/new动态分配,程序员需使用free/delete手动释放,具有更大的内存容量,但需要额外管理。 6. BOOL、float、指针变量与“零值比较的if语句”: - **BOOL**:在C++中,通常用bool类型表示逻辑真伪,if(flag)或if(!flag)分别代表条件成立和不成立。 - **float**:浮点数比较时,由于精度问题,不能直接用==或!=判断,通常设置一个极小的误差范围进行比较,如示例中的`const float EPSILON`。 - **指针变量**:在if语句中,可以直接比较指针是否为NULL,如`if(ptr)`表示检查ptr是否为空指针。 理解并熟练运用这些基础知识是成为一名合格的C++程序员的基础,对于面试和日常编程工作都有极大的帮助。