在全局域,不管const或是static都代表内存中是唯一。
不同之处在于const是个真正的唯一,不仅有唯一的地址,也有唯一的值;
而static仅仅有唯一的地址,其值可以被改变。
在局部域,比如说类,const丢失了地址的唯一性,保留了值的唯一性,因为一个类有很多个对象,而没个对象的地址肯定不同。
最有趣的是static,成为所有对象公用的一个地址,如果此时你还喜欢用const static,那还不如使用一个全局的const
关于静态常量(static const)?
是不该有在这个概念的。
因为,这还不如声明一个 无名enum 或者 无名namespace 好。
常量是说:“不能修改!或强烈建议别修改!”,const仅说明变量(或者函数)的不可修改性(或不修改别人)。
静态是说:“它是在静态数据区的变量”,static影响变量的作用域和存储域。
实际上,C++标准不赞成在名称空间和全局作用域中使用关键字static(该标准使用“不赞成”表明,这种做法,目前合法,但以后很可能将其视为非法)。例如,下面代码:
static int nCount;
int fun1();
int main()
{
…
}
int fun1()
{
…
}
C++标准的意思是,程序员应该这样做:
namespace
{
int nCount;
}
int fun1();
int main()
{
…
}
int fun1()
{
…
}
参考资料:http://hi.baidu.com/%CC%AB%B8%EE%B6%FA/blog/item/2792f28c4383c7ad0e244432.html