关于常量存储区的问题
假设在某个函数里有如下定义:
(1) char *s="hello";
请问s存储在哪个区,"hello"存储在哪个区?
(2) const int a=10;
请问a存储在哪个区,10存储在哪个区?
(3)请问类常量对象的声明方法,下面的声明是否正确?并问类常量对象的存储区域?
A为类名
A ob1;
const A ob2=ob1;
const A ob3(ob1);
假设在某个函数里有如下定义:
(1) char *s="hello";
请问s存储在哪个区,"hello"存储在哪个区?
(2) const int a=10;
请问a存储在哪个区,10存储在哪个区?
(3)请问类常量对象的声明方法,下面的声明是否正确?并问类常量对象的存储区域?
A为类名
A ob1;
const A ob2=ob1;
const A ob3(ob1);
const int a=10;//这个a分配内存空间
#define a 10 //这个a不分配内存空间
不是吗?
[此贴子已经被作者于2006-10-27 20:26:48编辑过]
回25
你是问你说的那个const int t=10;
当然这个10是有空间的
任何东西都有空间
当c o n s t被使用时,它在编译时会进行常量折叠。
这句话,我的理解是 把t与10当成一个常量
而且现在他们俩个都在常量区的数据区
我觉得这个10不分配空间.
通常C++编译器并不为const创建存储空间,相反它把定义保存在它的符号表里.