static 變數和static 函式

2021-05-08 09:36:37 字數 1094 閱讀 9223

在c語言程式設計中,static的乙個作用是資訊遮蔽!

比方說,你自己定義了乙個檔案 -- 該檔案中有一系列的函式以及變數的宣告和定義!

你希望該檔案中的一些函式和變數只能被該檔案中的函式使用,那麼,你可以在該函式、變數的前面加上static,代表他們只能被當前檔案中的函式使用!

而在c++中,用static來作為資訊遮蔽就顯得沒有必要了!因為,c++有了資訊遮蔽的利器 -- class機制!

類中的private屬性的變數和函式就對外禁止訪問!

然後是c/c++通用的函式作用域的static型的變數!其目的,也是為了資訊的遮蔽!

int fun()

在第一次進入這個函式的時候,變數a被初始化為1!並接著自增1!

以後每次進入該函式,a就不會被再次初始化了,僅進行自增1的操作!

在static發明前,要達到同樣的功能,則只能使用全域性變數:

int a = 1;

int fun()

那麼,a的值就有可能被其他函式所改變!

最後,說說類中的static變數和函式。

這種儲存屬性的變數和函式是同一種類的不同例項之間通訊的橋梁!

#include

using namespace std;

class a ;    //    每建立乙個例項,就讓num自增1

//    返回通過建構函式所建立過的a類例項的數目

static int how_many_instance()

}int  a::num = 0;    //    需要在類申明的外部單獨初始化!

int main()

一般,在類內部,是通過static屬性的函式,訪問static屬性的變數!

補充一點,在類中,static型的成員函式,由於是類所擁有的,而不是具體物件所有的,這一點對於windows的**機制非常有用。

因為對於**函式而言,windows不會借助任何物件去呼叫它,也就不會傳遞this指標,那麼對於一般成員函式作為**函式的後果,就是堆疊中有乙個隨機的變數會成為this指標,這當然會引發程式的崩潰。

而static函式,由於是整個類的,遮蔽了this指標。因此,如果成員函式作為**函式,就應該用static去修飾它。

Static 變數和Static函式

static變數和static函式 一 static 變數static變數大致分為三種用法 1.用於區域性變數中,成為靜態區域性變數.靜態區域性變數有兩個用法,記憶功能和全域性生存期.2.用於全域性變數,主要作用是限制此全域性變數被其他的檔案呼叫.3.用於類中的成員.表示這個成員是屬於這個類但是不屬...

static 方法和static 變數

static方法不能直接訪問類內的非static變數和不能呼叫this,super語句分析 大家都知道在static方法中,不能訪問類內非static成員變數和方法。可是原因是什麼呢?這首先要從static方法的特性說起。static方法,即類的靜態成員經常被稱為 成員變數 class member...

static變數和static函式

1 static全域性變數和普通的全域性變數 static全域性變數在定義該變數的當前原始檔內有效,在同一源程式的其它原始檔中不能使用它。而普通的全域性變數在各個原始檔中都是有效的 當乙個源程式由多個原始檔組成時 2 static區域性變數和普通的區域性變數 static區域性變數存放在靜態儲存區,...