Wednesday, September 14, 2011

static关键字在C/C++中的N种用法

static是C/C++中最让人抓狂的关键字,因为这个关键字被重载了太多不同的用法.要我说这就是C/C++这些语言设计崩坏的地方.

用法1:
在C中,如果用static修饰一个函数或者全局变量,那么这个函数或者变量仅仅为这个module中其他函数所见.所谓module就是这个C源文件的意思.这种用法实际上相当于Java或者C++中用private去修饰一个成员变量.这种用法下尽可能的使用static被认为是C程序员的良好习惯 -- C从设计上就对namespace问题苦手.

用法2:
在C++中,被static修饰的成员函数被称为静态成员函数.这种静态成员函数可以被"类名::函数名"来调用.

用法3:
C/C++中, 一个局部变量的声明如果被static修饰,那么该变量实际上不在运行栈上随着函数的调用和返回生灭,而是有一个全局的备份.换言之,这个变量类似于一个全局变量.  

No comments: