A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 绿箭 中级黑马   /  2014-6-16 15:19  /  1467 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么c++中可以static const修饰变量,c#不能

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

2 个回复

倒序浏览
对于C/C++语言来讲,
const就是只读的意思,只在声明中使用;
static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;
对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.
static const 应该就是上面两者的合集.
下面分别说明:
全局:
const,只读的全局变量,其值不可修改.
static,规定此全局变量只在当前模块(文件)中可见.
static const,既是只读的,又是只在当前模块中可见的.
文件:
文件指针可当作一个变量来看,与上面所说类似.
函数:
const,返回只读变量的函数.
static,规定此函数只在当前模块可见.
类:
const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)
static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
本帖最后由 十年等待VS祥 于 2014-6-17 16:26 编辑

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