類的靜態成員變數初始化時間

2021-10-05 16:38:24 字數 572 閱讀 5290

首先先搞明白 宣告、定義、初始化

類的靜態成員變數在類內宣告,可以多次宣告

類的靜態成員必須在類外定義,定義就是給變數分配記憶體,

初始化就是給乙個變數賦初值,內建型別通常定義時預設初始化

類靜態成員變數在main函式執行前完成初始化,有靜態初始化和動態初始化

static initialization: 靜態初始化指的是用常量來對變數進行初始化,主要包括 zero initialization 和 const initialization,靜態初始化在程式載入的過程中完成,對簡單型別(內建型別,pod等)來說,從具體實現上看,zero initialization 的變數會被儲存在 bss 段,const initialization 的變數則放在 data 段內,程式載入即可完成初始化,這和 c 語言裡的全域性變數初始化基本是一致的。

dynamic initialization:動態初始化主要是指需要經過函式呼叫才能完成的初始化,比如說:int a = foo(),或者是複雜型別(類)的初始化(需要呼叫建構函式)等。這些變數的初始化會在 main 函式執行前由執行時呼叫相應的**從而得以進行(函式內的 static 變數除外)。

面試題 類成員變數的初始化時間

class b private int a 1 public void go public class a1 extends b private int a 11 public void go public static void main string args 以上 輸出結果為 ba 0 a1我...

C 類的靜態成員變數初始化

今天寫 時用了下c 中的靜態成員變數,發現了乙個以前不注意的現象,特此記錄下。有類如下 class audioplay audioplay audioplay audioplay audioplay audioplay audioplay get 以上 編譯通過,但是鏈結時說無法解析這個靜態變數a。...

類成員變數初始化

在 c 中,類的成員變數未初始化問題,取決於物件建立方式,不同的建立方式,直接導致類成員變數的初值不同。本文通過下例,得出一下結論 1.在函式體內置立乙個物件,類成員變數和普通的區域性變數一樣,是乙個隨機值。2.建立乙個全域性成員物件,類成員變數和全域性變數一樣,編譯器賦值為 0。3.在函式體內 n...