黑马程序员技术交流社区

标题: 静态变量与const的区别 [打印本页]

作者: 绿箭    时间: 2014-6-16 15:19
标题: 静态变量与const的区别
为什么c++中可以static const修饰变量,c#不能
作者: 方杰斌    时间: 2014-6-16 15:52
对于C/C++语言来讲,
const就是只读的意思,只在声明中使用;
static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;
对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.
static const 应该就是上面两者的合集.
下面分别说明:
全局:
const,只读的全局变量,其值不可修改.
static,规定此全局变量只在当前模块(文件)中可见.
static const,既是只读的,又是只在当前模块中可见的.
文件:
文件指针可当作一个变量来看,与上面所说类似.
函数:
const,返回只读变量的函数.
static,规定此函数只在当前模块可见.
类:
const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)
static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.
作者: 十年等待VS祥    时间: 2014-6-17 16:24
本帖最后由 十年等待VS祥 于 2014-6-17 16:26 编辑

你好,c++的我不是很了解,c#的我就简要的回答下吧:首先变量和常量这两个是有区别的,前一个在使用中可以更改赋值,而另一个一旦定死一般是不作更改赋值的,在定义变量的时候加static和不加是有区别的,在类中定义表现的将尤为突出,静态的方法中只能访问静态字段(变量),因此如果你在类中定义了一个不加static的修饰符的变量时,那么在静态方法中将不能访问(如:main方法),而常量可以打破这一常规,我想这大概就归功于他的不可更改性吧,因此在类中定义的常量我们一般不作静态的修饰。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2