C/C++ 语言的Static

类别:编程语言 点击:0 评论:0 推荐:
在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;

本文地址:http://com.8s8s.com/it/it23824.htm