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 上面的例子中兩個建構函式的結果是一樣的。上面的建構函式 使用初始化列表的建構函...