C 類成員變數和建構函式初始化

2021-07-04 05:34:33 字數 1739 閱讀 8431

c++中各種型別的成員變數的初始化方法

c++成員變數、建構函式的初始化順序

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

成員變數初始化位置:

普通變數:建構函式的初始化列表中初始化或者建構函式體內進行賦值;

static靜態變數:類外進行初始化

const常量變數:建構函式的初始化列表中初始化

引用變數:建構函式的初始化列表中初始化

const static integral 變數:類的定義中初始化

初始化列表中成員變數的初始化順序:嚴格按照宣告次序,而不是在初始化列表中的順序。

class bclass

private:

int i;// 普通成員變數

const int ci;// 常量成員變數

int &ri;// 引用成員變數

static int si;// 靜態成員變數

//static int si2 = 100;// error: 只有靜態常量成員變數,才可以這樣初始化

static const int csi;// 靜態常量成員變數

static const int csi2 = 100;// 靜態常量成員變數的初始化(integral type)

static const double csd;// 靜態常量成員變數(non-integral type)

static const char f = 'a';//可以,char也是整型資料

//static const double csd2 = 99.9;// error: 只有靜態常量整型資料成員才可以在類中初始化

};// 靜態成員變數的初始化(integral type)

int bclass::si = 0;

// 靜態常量成員變數的初始化(integral type)

const int bclass::csi = 1;

// 靜態常量成員變數的初始化(non-integral type)

const double bclass::csd = 99.9;

建構函式初始化順序:

任何虛擬基類的建構函式按照它們被繼承的順序構造;

任何非虛擬基類的建構函式按照它們被繼承的順序構造;

任何成員物件的建構函式按照它們宣告的順序呼叫;

#include using namespace std;

class obj1

};class obj2

}class base1

}class base2

};class base3

};class base4

};class derived :public base1, virtual public base2,public base3, virtual public base4//繼承順序

protected:

obj1 obj1;//宣告順序

obj2 obj2;

};int main()

結果:base2 //虛擬基類按照被繼承順序初始化

base4 //虛擬基類按照被繼承的順序

base1 //非虛擬基類按照被繼承的順序初始化

base3 //非虛擬基類按照被繼承的順序

obj1 //成員函式按照宣告的順序初始化

obj2 //成員函式按照宣告的順序

derived ok.

this is ok.

c 建構函式初始化類成員

includeusing namespace std class box box box int h,int w,int l int box volume int main box box int h,int w,int l hight h width w length l int box volu...

C 類建構函式初始化變數

2009 12 18 17 46 48 分類 c 字型大小訂閱 與任何其他函式一樣,建構函式具有名字 形參表和函式體。與其他函式不同的是,建構函式也可以包含乙個建構函式初始化列表 建構函式初始化列表以乙個冒號開始,接著是乙個以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在圓括號中的初始化式。如下...

C 類建構函式初始化列表及初始化成員變數的誤區

建構函式初始化列表以乙個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在括號中的初始化式。例如 cpp view plain copy class cexample 建構函式內部賦值 cexample 上面的例子中兩個建構函式的結果是一樣的。上面的建構函式 使用初始化列表的建構函...