成員函數中的靜態變數:了解其行為
在C 中,成員函數中的靜態變數的行為與實例變數不同。讓我們用一個例子來探討它們是如何運作的:
考慮下面的類別:
class A { void foo() { static int i; i++; } };
在這個類別中,i 在 foo 成員函數中被宣告為靜態變數。靜態變數的生命週期在整個程式中持續存在。
現在,讓我們考慮創建A 類別的多個實例時會發生什麼:
A o1, o2, o3;
是我在所有物件之間共享的靜態變數A 的實例,還是每個實例都有自己的副本?
在 C 中,成員函數中的靜態變數在類別的所有實例之間共用。這意味著在 A 的一個實例上呼叫 foo() 會為所有實例增加相同的 i。
為了說明此行為:
o1.foo(); // i = 1 o2.foo(); // i = 2 o3.foo(); // i = 3
在此範例中,A 的每個實例都會呼叫foo() 函數,遞增共用靜態變數 i。
因此,與每個實例都是唯一的實例變數不同,成員函數中的靜態變數是共享的單一實體由類別的所有實例。他們在整個計劃的整個生命週期中保持自己的價值觀。
以上是成員函數中的靜態變數是否在類別的所有實例之間共用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!