const 内存分配的情况
const 内存分配的情况简要的归纳了一下const常量的内存分配问题:c++的编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高,同时,这也是它取代预定义语句的重要基础。符号表的作用是登记源程序中出现的各种名字及其信息,以及编译各阶段的进展状况。
实现技术:线性表,对折查找与二叉树,杂凑技术; 分配内存的情况:
extern const int bufsz;
//外部声明
const int bufsz=100;
long address =(long) &bufsz; //取const变量的地址
const int [] i={1,2,3}; //用于集合
class x{
const int i; //类const,跟c中的const常量特性一样
public:
}
不分配内存的情况:
const int i=100; //全局常量 这是c++编程思想第二版第177页中的一段话:
“const可以用于集合,但必须保证编译器不会复杂到把一个集合保存到它的符号表中,所以必须分配内存。在这种情况下,const意味着“不能改变的一块存储空间”。然而,不能在编译期间使用它的值,因为编译器在编译期间不需要知道存储的内容。”