-
靜態---靜態。
下面是乙個示例。 class t
-
最初,從 new 中產生的東西存在於堆中,也就是說,如果你新建乙個物件,它的資料成員會在堆中生成一次,並且成員函式是共享的。 如果將資料成員宣告為靜態成員,則該資料成員將儲存在資料區域中,並且無論更新多少次,都會共享此資料成員。 因此,實現了資料的共享。
例如,有乙個 student 類的 int static allstudent=0;您可以在建構函式中實現 allstudent++; 這樣,每次新增新的學生物件時,allstudent 的值都會更改為新增 1。 數一數有多少學生。
-
靜態成員。
對擁有的副本進行分類,在記憶體中僅保留乙個副本,並與多個物件共享。
對於普通成員變數,建立乙個物件將產生乙個物件,而靜態成員變數是多個物件共享此變數,並且所有物件都可以更改其值。
-
靜態成員在載入類時載入,僅載入一次,並且是所有類物件共享的屬性,可由靜態方法直接訪問。
-
靜態方法可以在沒有物件的情況下直接呼叫
String 類有乙個靜態方法,即 valueof()。 你可以寫 valueof("a") 獲取字串的值;但是像 int 類有乙個名為 tostring() 的方法,它不是靜態的,所以我們在呼叫時需要乙個物件 int a= 0; ;
-
也就是說,它是全域性的,可以任意呼叫,但它的內部函式是通過靜態修改的方法呼叫的。
-
C 語言中的靜態變數可以稱為靜態區域性變數。 通常,函式中定義的變數的範圍和生存期僅限於該函式。 但是如果在它前面新增靜電,他的生命週期就會增加。
也就是說,離開這個函式後,這個靜態變數就不再是**了,它會一直存在,並且會保持上次的值,這類似於乙個全域性變數的性質。 但是,與全域性變數不同,靜態區域性變數仍然僅限於此函式。 希望對你有所幫助!
-
2.靜態修改變數。
1.全域性靜態變數。
通過在全域性變數前新增關鍵字 static,將全域性變數定義為全域性靜態變數。
1)記憶體中的位置:靜態儲存(靜態儲存在程式的整個持續時間內存在)。
2)初始化:未初始化的全域性靜態變數由程式自動初始化為0(自動物件的值是任意的,除非顯示為初始化)。
3) 作用域:全域性靜態變數在宣告它的檔案之外不可見。準確地說,從定義點開始,到文件結束。
定義全域性靜態變數的好處:
1>不會被其他檔案訪問或修改。
2> 同名變數可以在其他檔案中使用,而不會發生衝突。
2.區域性靜態變數。
通過在區域性變數前新增關鍵字 static,將區域性變數定義為區域性靜態變數。
1)記憶體位置:靜態儲存。
2)初始化:未初始化的區域性靜態變數將被程式自動初始化為0(自動物件的值是任意的,除非顯示為初始化)。
3)作用域:作用域仍是區域性作用域,當定義它的函式或語句塊結束時,作用域也隨之結束。
注意:當使用static修改區域性變數時,它會將區域性變數的儲存位置從原來的堆疊儲存更改為靜態儲存。 但是,區域性靜態變數在離開作用域後不會被銷毀,而是保留在記憶體中直到程式結束,但我們無法再訪問它。
-
C++ 中只有乙個例項的“類”的靜態成員。 這意味著該類的所有例項都使用相同的變數。 如果變數是公共的,則可以通過類名“variable name”直接訪問類的外部。
**中的例項變數、類變數和常量都屬於成員變數,這些變數與變數的修飾符有關,即上面**中的private、static、final等修飾符。
首先,類的靜態成員變數是類的全域性變數,不歸類的物件所有。 但是,類的普通成員變數在類生成物件後對生成的物件是唯一的,不能與其他生成的物件共享。 如下圖所示,兩個物件 A 和 B 的成員變數 x 不完全相同。
靜態成員變數需要全域性定義,而普通成員變數屬於乙個物件,不需要全域性定義。 類的靜態成員變數可以按以下形式訪問,如類A中定義的靜態成員變數x,以類名、變數名的形式訪問,類的靜態成員變數在物件生成之前就已經存在。
-
靜態成員函式雖然是“成員”函式,但實際上並不是成員,而是乙個全域性函式,只是作用域受到類的約束(即public只能作為全域性函式使用,非public只能用在類的物件中)。
由於它類似於全域性函式,因此它與物件無關。
您希望在靜態成員函式中使用某類成員變數。 你首先要確保有某種“物件”,不"物件"物件沒有成員變數。 而靜態成員函式是全域性函式,不依賴於"物件",即不需要建立出來"物件"也可以呼叫靜態成員函式。
所以當你呼叫靜態成員函式時,該函式屬於"物件"不存在(static 根本沒有要歸屬的物件)。 因此,短語“使用類的成員變數”的“class”物件不存在。
靜態函式沒有物件,因此它不能使用物件的成員變數。 但是,它可以修改其他物件的成員變數。
您可以建立乙個"物件"再放一次"物件"將其作為引數傳遞給靜態函式,然後在靜態函式中修改物件引數內的成員變數。
-
類宣告後,直接初始化,寫個例子。
class a
int data;
public:
static a *p;
static void fun();
a* a::p = new a(100);
void a::fun()
int main()
-
建立乙個"物件"再放一次"物件"作為引數,它被傳遞給靜態函式,然後在靜態函式中修改物件引數內的成員變數。
-
不可以,但您可以傳遞乙個引數來操作它。
-
答:在C語言中,static主要定義全域性靜態變數,定義區域性靜態變數,定義靜態函式。
1. 定義乙個全域性靜態變數:在全域性變數前面加上關鍵字static,全域性變數就變成了全域性靜態變數。 全域性靜態變數具有以下特徵:
1) 在全域性資料區內分配記憶體。
2) 如果未初始化,則預設值為 0
3) 此變數在此檔案中從定義的開始到檔案的結束都是可見的。
2. 定義區域性靜態變數:在區域性靜態變數前面加上關鍵字static,區域性變數就變成了靜態區域性變數。 靜態區域性變數具有以下特徵:
1) 此變數在全域性資料區域中分配記憶體。
2) 如果未顯示初始化,則它將被隱式初始化為 0
3) 它始終駐留在全域性資料區中,直到程式執行結束。
4)它的作用域是區域性的,當定義它的函式或語句塊結束時,它的作用域也隨之結束。
3. 定義乙個靜態函式:在函式的返回型別中加入 static 關鍵字,該函式被定義為靜態函式。 靜態函式具有以下特徵:
1) 靜態函式只能在此原始檔中使用。
2) 在檔案作用域中宣告的內聯函式預設為靜態
注意:靜態函式只是乙個普通的全域性函式,但由於靜態限制,只能在檔案所在的編譯單元中使用,不能在其他編譯單元中使用。
-
有兩個主要用途。
讓乙個變數在很長一段時間內有效,而不管它在哪裡被陳述。 例如:
int fun1()
無論 fun1 在哪裡呼叫,函式退出後,系統總是會儲存 s 值的最後乙個值(相當於全域性變數),下次再次使用 s 值時,即再次呼叫 fun1() 時,s 值的初始值將是最近儲存的值(注意 s 值初始化操作只會執行一次, 即上述語句 s 值 = 0)。
2.避免多個檔案使用同乙個變數名導致的衝突,例如多人獨立開發的多個檔案。 假設他們在自己的檔案中定義了相同的“全域性”變數名(這意味著在他們自己的檔案中只有全域性),當系統整合時,他們使用相同的“全域性”變數,這會導致難題。
解決此問題的一種便捷方法是在每個檔案中的同一全域性變數宣告中新增乙個靜態修飾符。 這樣,系統就會為它們分配不同的記憶,而不管彼此如何。
蛋清有什麼好處? 蛋清是殼下面板中的半流動凝膠狀物質,主要是卵清蛋白。 蛋清中含有一定量的核黃素、菸酸、生物素、鈣、磷、鐵等物質。 具有潤肺、清熱解毒、補充營養等功效。 >>>More
通過計算機的任務管理器,您可以檢視計算機的CPU和記憶體的詳細資訊,然後我會告訴您如何檢查計算機的CPU使用率。 >>>More
腐爛會影響照明效果。
在玻璃邊緣安裝太陽能電池後,在玻璃表面塗上混合塗層,塗料吸收陽光,將光線以不同波長傳輸到安裝在玻璃邊緣的太陽能電池。 麻省理工學院(Massachusetts Institute of Technology)的電氣工程師、該研究小組負責人馬克·巴爾多(Mark Baldo)說:“塗層可以在大型物體上捕獲陽光,例如玻璃窗。 >>>More