C C 語言類成員變數初始化總結

2021-07-11 00:50:07 字數 1757 閱讀 2481

本文**:

c++語言類成員變數初始化共有5種方法。

第1種,在無引數的建構函式中初始化;

第2種,帶引數的建構函式中初始化;

第3種,直接給成員變數賦值;

第4種,呼叫成員函式來初始化成員變數;

第5種,用this指標;

分別敘述。

方法一:

class animal 

; animal::animal() 

方法二:

class animal 

; animal::animal(int x,int y) 

方法三:

class animal 

; void main() 

方法四:

class animal 

; void animal::init(int x,int y) 

void main() 

方法五:

class animal 

; void animal::init(int a,int b) 

針對不同的變數型別,在選擇初始化方法時,有不同的優先順序。總結如下:

普通的變數:

一般不考慮啥效率的情況下 可以在建構函式中進行賦值。考慮一下效率的可以再建構函式的初始化列表中進行。

class ca 

; ca::ca():data(0)//……#1……初始化列表方式 

;

static 靜態變數:

static變數屬於類所有,而不屬於類的物件,因此不管類被例項化了多少個物件,該變數都只有乙個。在這種性質上理解,有點類似於全域性變數的唯一性。

class ca 

; int ca::sum=0

;//……#2……類外進行初始化 

const 常量變數: const常量需要在宣告的時候即初始化。因此需要在變數建立的時候進行初始化。必須採用在建構函式的初始化列表中進行。

class ca 

; ca::ca():max(100) 

reference 引用型變數: 引用型變數和const變數類似。需要在建立的時候即進行初始化。也是必須在初始化列表中進行。

class ca 

; ca::ca():counter(init) 

const static integral 變數: 對於既是const又是static 而且還是整形變數,c++是給予特權的。可以直接在類的定義中初始化。short可以,但float的不可以哦。

class ca 

; 總結起來,可以初始化的情況有如下四個地方: 1、在類的定義中進行的,只有const 且 static 且 integral 的變數。 2、在類的建構函式初始化列表中, 包括普通變數,const常量(不包含第一種情況)和reference變數。 3、在類的定義之外初始化的,包括static變數。因為它是屬於類的唯一變數。 4、普通的變數可以在建構函式的內部,通過賦值方式進行。當然這樣效率不高。 5.const資料成員(非static)必須在建構函式的初始化列表中初始化。 6.陣列成員是不能在初始化列表裡初始化的。 7.const static 和static const是一樣的,這樣的變數可以直接在類定義中初始化,也可以在類外。 說明了乙個問題:c++裡面是不能定義常量陣列的!因為5和6的矛盾。 類物件的構造順序是這樣的: 1.分配記憶體,呼叫建構函式時,隱式/顯示的初始化各資料成員 2.進入建構函式後在建構函式中執行一般計算

C 語言類成員變數初始化總結

共有5種方法。第1種,在無引數的建構函式中初始化 第2種,帶引數的建構函式中初始化 第3種,直接給成員變數賦值 第4種,呼叫成員函式來初始化成員變數 第5種,用this指標 分別敘述。方法一 class animal animal animal 方法二 class animal animal ani...

類成員變數初始化

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

c 類的成員變數初始化總結

1.c 變數的初始化方式 首先把需要初始化的成員變數分為幾類 a.一般變數 int b.靜態成員變數 static int c.常量 const int d.靜態常量 static const int 對應的初始化方式是 a.一般變數可以在初始化列表裡或者建構函式裡初始化,不能直接初始化或者類外初始...