static in c++
two basic meanings
static storage
--allocated once at a fixed address
visibility of a name
--internal linkage
don』t use static except inside functions and classes.
uses of 「static」 in c++
static free functions—-deprecated棄用
static globle variables—-deprecated棄用
static local variables—-persistent storage持久儲存
static member variables—-shared by all instances所有物件共享
static member functions—-shared by all instances, can only access static member variables所有物件共享,只能訪問靜態變數或靜態函式
static inside functions
value is remembered for entire program
initialization occurs only once
constructors are called before main() is entered
--constructor called at-most once
--main() is no longer the first function called
--the constructor arguments must be satisfied
destructors called when
--main() exited
--exited is called
–compiler assures lifo order of destructors
static means
--hidden(now usually use public,protected,private)
--persistant
hidden: a static member is a member
--obeys usual access rules
persistant: independent of instances
假設有乙個類:
class a
void f()
物件 a 的初始化發生在第一次進f()
函式的時候,空間在全域性變數區,在編譯(鏈結)的時候分配空間。
(而全域性變數的構造發生在程式執行的時候,在main()之前)
物件呼叫靜態方法 C 中靜態成員 靜態方法 靜態類
平時在用c 做開發的朋友都知道,不論是靜態成員還是靜態方法還是靜態類都是用static關鍵字來修飾。也就是說只要看到了static,那麼它後面的東西就是靜態!在c 中,靜態成員或者靜態方法是屬於類的,不是屬於物件。假如我們有乙個類myclass,需要例項化這個 類,就應該這麼做 myclass my...
C 之全域性物件,區域性物件,靜態區域性物件
先說兩個概念 作用域 scope 和生命週期 lifetime 作用域 名字的作用域指的是知道該名字的程式文字區域 生命週期 物件的生命週期指在程式執行過程中物件存在的時間 全域性物件,顧名思義是全域性的物件,其作用域是整個程式文字,其物件的宣告週期是整個程式的執行過程 區域性物件 一般說的區域性變...
C 棧物件,堆物件,靜態物件的理解
的優勢是在適當的時候自動生成,又在適當的時候自動銷毀,不需要程式設計師操心 而且棧物件的建立速度一般較堆物件快,因為分配堆物件時,會呼叫operator new操作,operator new會採用某種記憶體空間搜尋演算法,而該搜尋過程可能是很費時間的,產生棧物件則沒有這麼麻煩,它僅僅需要移動棧頂指標...