C++编程基础:const、内存分配与static解析

需积分: 19 3 下载量 55 浏览量 更新于2024-09-09 收藏 171KB PDF 举报
"面向对象(C++)笔记" 在学习C++的过程中,理解并掌握面向对象的概念至关重要。C++是一种支持面向对象编程(OOP)的强类型语言,它结合了过程化编程和面向对象编程的优点。这篇笔记主要涵盖了C++的基础知识,包括const常量与宏常量的区别、内存分配方式、static关键字的应用以及变量的存储类别。 1. const与#define的区别 const常量是C++中的一个关键特性,它提供了类型安全的优势。与宏常量(预处理器指令#define定义的常量)相比,const常量具备以下优点: - 类型安全:const常量具有数据类型,编译器会在编译时进行类型检查,确保常量的使用符合其数据类型,而宏常量仅进行文本替换,不检查类型,可能导致类型错误。 - 调试支持:一些高级的调试工具能够识别const常量并提供调试信息,而宏常量无法得到这样的支持。 - 避免副作用:宏常量的文本替换可能会在复杂的表达式中产生意外的结果,如未预期的副作用或计算错误。 2. C++语言内存的分配方式 C++中有三种主要的内存分配方式: - 静态存储区域分配:全局变量和静态变量在此分配,它们在整个程序运行期间都存在。 - 栈上创建:函数内部的局部变量在函数调用时分配空间,函数返回时自动释放。 - 堆上分配:通过new或malloc动态分配内存,程序员需要使用delete或free手动释放。这种方式灵活但需要谨慎管理内存,以避免内存泄漏和悬挂指针等问题。 3. static关键字的应用 - static全局变量:与普通全局变量相比,静态全局变量的作用域仅限于定义它的源文件,避免了不同源文件间的名称冲突。 - static局部变量:只在定义它的函数或块中初始化一次,每次函数调用时保留上次调用结束时的值,而不是重新初始化。 4. 变量的存储类 C++中的变量存储类别主要包括: - 自动变量:在函数内部或复合语句内定义,每次进入相应的代码块时分配空间,退出时释放。 - 静态局部变量:与自动变量类似,但只初始化一次,且在函数的多次调用间保持其值。 - 寄存器变量:尝试存储在CPU寄存器中以提高速度,但实际存储位置取决于编译器。 - 外部变量:在函数外部定义,具有全局作用域,可被程序的任何部分访问。非静态外部变量在整个程序运行期间存在,而静态外部变量仅在其定义的源文件中可见。 掌握这些基础知识对于深入学习C++的面向对象特性,如类、对象、封装、继承、多态等至关重要。了解和运用好这些概念,能帮助开发者编写出更加高效、健壮的代码。