C C 靜態成員變數和靜態成員函式

2021-05-23 08:43:12 字數 1303 閱讀 4715

c中的靜態變數和靜態函式。

(1)c中的靜態變數是處於全域性儲存區,區別於自動變數的儲存於棧中。兩者的關鍵 區別是其作用域的區別。自動變數的作用域處於其所在的函式或語句塊中;而靜態 變數的作用域起始於其定義處,終止於程式結束處。

(2)c中的靜態函式主要是限制函式的名字以及可訪問域於檔案中,表示此函式僅供 此檔案所用,不允許在其他檔案中呼叫的。有關靜態函式的使用可以考慮幾點:一 是靜態函式的名字僅可見於其所定義的檔案。這就允許在不同的檔案中存在同名的 靜態函式。可以利用此特性將本檔案常用的**抽象出來成為函式,而在使用此段 **的地方直接呼叫函式即可。這樣允許用簡短的名詞定義此函式。我的體驗,在 面臨定義功能相同的函式是,為他們取乙個美麗的名字其實很困難,而在使用上對 名字的記憶也頗費苦心。而用靜態函式可以省力許多。而普通函式是可以全域性訪問的,而且在c中沒有名字空間的概念,所以對c中函式的命名頗費苦心。

c++中的靜態成員變數和靜態成員函式。

(1)類靜態資料成員在編譯時建立並初始化:在該類的任何物件建立之前就存在, 不屬於任何物件,而非靜態類成員變數則是屬於物件所有的。類靜態資料成員只有 乙個拷貝,為所有此類的物件所共享。需要注意的是:靜態資料成員不能在類中初 始化(對於常量靜態類變數有待考證,好像可以在類外或main()函式之前定義,初 始化可以放在類中),一般在類外和main()函式之前初始化,預設時初始化為0。靜態據成員用來定義類的各個物件所公有的資料,比全域性變數更安全。(2)類靜態成員函式屬於整個類,不屬於某個物件,由該類所有物件共享。靜態成員可定義為inline函式。一般情況下靜態成員函式用於訪問同一類中的靜態資料成員或全域性變數,而不訪問非靜態成員,如需訪問非靜態成員,需要將物件作為引數,通過物件名訪問該物件的非靜態成員。靜態成員函式也可以在類外定義,此時不可以用 static修飾。靜態成員函式存在的原因是什麼呢?主要是在建立任何物件之前可用它來訪問靜態資料成員,普通函式不能實現此功能。

c++靜態成員和靜態成員函式的使用:靜態成員的呼叫格式:類名::靜態資料 成員名、物件名.靜態資料成員名、物件指標->靜態資料成員、物件引用.靜態資料 成員(但類中很少會出現公有資料成員,這段僅僅討論語法,未考慮實際運用中的資料封裝問題)。靜態成員函式的呼叫格式:類名::靜態成員函式名、物件名.靜 態成員函式名、物件指標->靜態成員函式名、物件引用.靜態資料成員。靜態成員 函式沒有this指標,因它不與特定物件相聯絡,呼叫時推薦使用「類名::靜態成 員函式名」格式。總結來說,在有物件的情況下,可以用呼叫普通類成員函式、普 通成員變數的方式呼叫靜態成員函式和靜態成員變數。從這裡可以看出靜態成員變 量和靜態成員函式的使用應該是在不建立任何物件的情況下呼叫它們。其應用可以 參見設計模式中singleton pattern。

靜態成員變數 和 靜態成員函式

資料成員可以分靜態變數 非靜態變數兩種.靜態成員 靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名 靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員.因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜...

靜態成員變數和靜態成員函式

我們學到的類物件的成員變數一般都是這個物件專屬,不能為其他物件所共有。然而在實際程式設計中我們需要統計物件的數量等問題,所以就必須設定乙個類的物件所共有的變數,就是靜態成員變數。首先通過乙個簡單的例程 說明靜態成員如何使用。includeusing namespace std class a vir...

靜態成員變數和靜態成員函式

本章內容均為coursera中c 程式設計課件的整理 基本概念 靜態成員 在說明前面加了static關鍵字的成員。class crectangle 普通成員變數每個物件有各自的乙份,而靜態成員變數一共就乙份,為所有物件共享。sizeof 運算子不會計算靜態成員變數。class cmyclass 則 ...