const 和static

来源:互联网 发布:淘宝网变形金刚玩具 编辑:程序博客网 时间:2024/06/05 15:51
对于C/C++语言来讲,
const就是只读的意思,只在声明中使用;
static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;
对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.
static const 应该就是上面两者的合集.
下面分别说明:
全局:
const,只读的全局变量,其值不可修改.
static,规定此全局变量只在当前模块(文件)中可见.
static const,既是只读的,又是只在当前模块中可见的.
文件:
文件指针可当作一个变量来看,与上面所说类似.
函数:
const,返回只读变量的函数.
static,规定此函数只在当前模块可见.
类:
const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)

static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.

static为静态修饰符,可以放在对象前面(函数也是一种对象)如:
class Example{
public static void show(){
Console.WriteLine("这是一个静态方法");
}
}
可直接Example.show();去调用这个方法而不用实例化
当然也可以定义静态的属性:
public static string str="hello";
但如果这样Example.str="helloworld";就出现问题了
也就是客户端可以在任何地方去改变str的值。这样的话极容易产生错误,因为str的值是依靠Example类的,随时可以改变。比如再声明一个类:
Class Class1
{
Example.str="helloworld";
public void show()
{
Console.WriteLine(Example.str);//此时Example.str会输出helloworld
}
}
class Example{
public static string str="hello";
}
}
要防止str值发生改变,就需要用到const修饰符
public const string str="hello";//str被称为常量
这是如果再对Example.str赋值,则编译器将产生错误
用常量来保存公共数据是最为合适的。

原创粉丝点击