1. 程式人生 > >Cpp -C++類中成員變數的初始化總結

Cpp -C++類中成員變數的初始化總結

1. 普通的變數:

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

class CA 
{ 
public: 
     int data; 
public: 
     CA(); 
}; 

CA::CA():data(0) //……#1……初始化列表方式 
{ 
    //data = 0;//……#1……賦值方式 
};

2、static 靜態變數:

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

class CA 
{ 
public
: static int sum; public: CA(); }; int CA::sum=0; //……#2……類外進行初始化

3、const 常量變數:

const常量需要在宣告的時候即初始化。因此需要在變數建立的時候進行初始化。一般採用在建構函式的初始化列表中進行。
class CA 
{ 
public: 
    const int max; 
public: 
    CA(); 
}; 

CA::CA():max(100) 
{ 
}

4、Reference 引用型變數:

引用型變數和const變數類似。需要在建立的時候即進行初始化。也是在初始化列表中進行。但需要注意用Reference型別。
class CA 
{ 
public: 
    int init; 
    int& counter; 
public: 
    CA(); 
}; 

CA::CA(): counter(&init) 
{ 
}

總結起來,可以初始化的情況有如下四個地方:

1、在類的定義中進行的,只有const 且 static 且 integral 的變數。

2、在類的建構函式初始化列表中, 包括const物件和Reference物件。

3、在類的定義之外初始化的,包括static變數。因為它是屬於類的唯一變數。

4、普通的變數可以在建構函式的內部,通過賦值方式進行。當然這樣效率不高。