Chinaunix首页 | 论坛 | 博客
  • 博客访问: 774948
  • 博文数量: 265
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1985
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-13 12:33
文章分类

全部博文(265)

文章存档

2011年(1)

2010年(66)

2009年(198)

我的朋友

分类:

2009-07-13 16:00:43

在C语言中,static 具有的两重意义:

(1) 如果 static int foo; 这一句位于函数中,则 static 表示的是存储属性,表明 foo 是一个静态变量。放在静态存储区,只占一份空间。它的生存周期和程序一样长。

(2) 如果 static int foo;  这一句位于函数外面,则 foo 是一个全局变量,static 不再是表示存储性质,而是作为限制符来使用:用来限制全局变量 foo 的可见范围,将其作用域限制于所在的文件内,在其它文件中是不可见的。 
static void func();表示该函数只在本文件可见。

在C++中,类中的static成员表示所有对象共享存储区。静态成员函数只可以访问静态成员。静态成员初始化必须放在文件范围,即使是私有成员。静态成员函数调用可以用对象+成员函数,也可以用类+成员函数进行调用。

// Example of the static keyword static int i; // Variable accessible only from this file static void func(); // Function accessible only from this file int max_so_far( int curr ) { static int biggest; // Variable whose value is retained // between each function call if( curr > biggest ) biggest = curr; return biggest; } // C++ only class SavingsAccount { public: static void setInterest( float newValue ) // Member function { currentRate = newValue; } // that accesses // only static // members private: char name[30]; float total; static float currentRate; // One copy of this member is // shared among all instances // of SavingsAccount }; // Static data members must be initialized at file scope, even // if private. float SavingsAccount::currentRate = 0.00154;

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=241084

阅读(552) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~