類中靜態成員注意事項
(1)類中靜態成員分為 靜態資料成員 和 靜態成員函式。
(2)靜態資料成員與全域性物件的區別:
<1> static成員的名字是在類的作用域中,可以避免命名衝突。
<2> static資料成員可以是私有成員,而全域性物件不可以。
(3)static成員遵循正常的訪問規則。
(4)類中static資料成員獨立於該類的任意物件而存在。
(5)在成員宣告前加上static關鍵字將成員設為所謂的靜態。
(6)類中static成員函式與一般的普通成員函式最大的區別在於不存在this指標。因為這個函式是與類相關的函式,而不是與某乙個物件相關。
(7)宣告函式時在前面加關鍵字static,當在類外實現這個函式時,不允許加關鍵字。
(8)可以通過作用域操作符直接呼叫static成員函式。或者類的物件,引用或指向類物件的指標間接的呼叫static函式。
(9)static成員不是任何物件的組成部分,所以static成員函式不能被宣告為const。(函式宣告為const是對函式this指標的進一步限定,而
static成員函式本身就不存在this指標,所以再加const是沒有意義的)
(10)static成員函式不可以被宣告為虛函式。虛函式是為實現多型的一種特殊的成員函式,因為static函式沒有this指標,因此是沒有意義的。
(11)static資料成員可以宣告為任意型別:常量、引用、陣列、類型別等等。
(12)static資料成員必須在類的定義體外部定義。
1classb2
;4classa5
;
2、靜態成員函式宣告及訪問,相關示例**如下:
1 #include 2using
namespace
std;34
class
teststatic512
13static
void print(int
nvalue)
1418
};19
20void
main()
2144
/*run out
45teststatic::print(1)
46teststatic::normal()
47teststatic::print(100)
48teststatic::print(2)
49teststatic::normal()
50teststatic::print(100)
51teststatic::print(3)
52teststatic::normal()
53teststatic::print(100)
54teststatic::print(4)
55teststatic::print(5)
56請按任意鍵繼續. . .
57*/
c語言中static的作用
第一、修飾區域性變數。static修飾的區域性變數只執行一次初始化,且延長了區域性變數的生命週期,直到程式執行結束以後才釋放。
static修飾的區域性變數存放在全域性資料區的靜態變數區。初始化的時預設值為0;
第二、修飾全域性變數。static修飾的全域性變數只能在本檔案中訪問,不能在其它檔案中訪問,即便是加extern外部宣告也不可以。
第三、修飾函式。若static修飾乙個函式,則這個函式的只能在本檔案中呼叫,不能在其他檔案被呼叫。即具有檔案作用域。
(1)不想被釋放的時候,可以使用static修飾。比如修飾函式中存放在棧空間的陣列。如果不想讓這個陣列在函式呼叫結束釋放可以使用static修飾。
(2)考慮到資料安全性(當想要使用全域性變數的時候應該先考慮使用static)。
綜上所述,
從更深層次思考,不加static意味著external鏈結屬性,可能在其它編譯單元有定義,或被其它編譯單元使用,由於某種需要,一般會有乙個跳轉表。
而static只在本編譯單元用,所以沒有跳轉表。也就是說,不加static的會執行乙個jmp然後再到函式體**,而static的會直接執行。
為什麼要有乙個表呢?正是實現多編譯單元的相互作用。比如函式在a中定義,在b中呼叫,於是呼叫的**只需要走到跳轉表就行。
good good study, day day up.
順序 選擇 迴圈 總結
C語言中的static關鍵字
c語言中的變數 1.自動變數。變數在執行到他的塊尾時就超出了作用域,它在堆疊上分配的記憶體會被釋放,以供另乙個函式使用。它們是在宣告時自動建立的,在程式退出宣告它的塊後自動刪除。2.全域性變數。可以在任意位置訪問,它的宣告方式和一般變數相同,但是它的位置非常重要,這個位置決定了變數是否為全域性變數。...
C語言中的static關鍵字
static關鍵字,意為靜態。靜態區域性變數void add test 靜態全域性變數 c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化...
C C 語言 static關鍵字的用法
c c 中static關鍵字可以從以下三個方面理解 static int a 本質意義為static修飾的變數被分配在靜態儲存區,不是在棧上,也不是在堆上。所以有以下應用場景。1,c語言中,會在初次執行的時候進行初始化,整個程式執行期間都不釋放。如果變數為c 類物件,則在main 之前執行建構函式,...