類的資料成員的初始化

2021-05-24 14:38:29 字數 1546 閱讀 6624

一、基本資料型別(c++內建資料型別,包括int、float、char、bool)

1.一般成員變數,在建構函式的成員初始化列表或函式體中進行初始化。

(注:初始化列表的初始化變數順序是根據成員變數的宣告順序來執行的)

classname ;   

int classname::total = 0; // 不用static關鍵字修飾  

3.成員常量和引用成員,只能在建構函式的成員初始化列表中進行初始化。因為一旦進入建構函式,此兩類資料均不能再改變。

view plaincopy to clipboardprint?

classname ;  

const double classname::d = 1e-10; // 只能如此初始化  

// const int classname::subjectcount = 3; 也可以  

二、自定義資料型別(包括標準庫中包含的string等型別)

1.一般成員變數,只能在建構函式的成員初始化列表中進行初始化(例項化該類物件)。

view plaincopy to clipboardprint?

class mytype    

private:   

char c;  

};  

class t    

private:   

mytype mtp;  

}; 若自定義資料型別存在預設建構函式或沒有定義建構函式而使用編譯器提供的預設建構函式,則可以省略對該型別的建構函式的呼叫,編譯器會自動呼叫預設/預設建構函式,完成該類物件的構造,如標準庫中的string型別。

2.靜態成員變數和靜態成員常量,在類體外進行初始化,且不能位於任何函式中。

view plaincopy to clipboardprint?

class t ;  

const string t::str("abcdef"); // 不用static修飾.const string t::str = "abcdef";與之等價,因為string類的建構函式未用explicit修飾,編譯器進行隱式轉換  

//const string t::str;等價於 const string t::str(""); 

3.成員常量和引用成員,只能在建構函式的成員初始化列表中進行初始化。因為一旦進入建構函式,此兩類資料均不能再改變。

view plaincopy to clipboardprint?

class mytype    

private:   

char c;  

};  

class t    

public:   

const mytype mtp;   

mytype &ref;  

}; 三、總結

1.所有的靜態資料成員(包括常量和變數)均可在類體外進行初始化;所有的非靜態資料成員(包括常量和變數)均可在建構函式初始化列表中進行初始化。

2.整型靜態成員常量還可以在宣告的位置處進行初始化。

3.屬於基本資料型別的非靜態成員變數還可以在建構函式體中進行初始化。

類的成員初始化

類的每個基本型別資料成員都有乙個初始值 類中定義乙個物件引用時,如果不初始化,此引用會獲得乙個特殊值 null。如下 public class initialvalues public static void main string args output data type initial val...

C 類資料成員的初始化

c 為類中提供類成員的初始化列表 類物件的構造順序是這樣的 1.分配記憶體,呼叫建構函式時,隱式 顯示的初始化各資料成員 2.進入建構函式後在建構函式中執行一般計算 1.類裡面的任何成員變數在定義時是不能初始化的。2.一般的資料成員可以在建構函式中初始化。3.const資料成員必須在建構函式的初始化...

類成員初始化

在類內部 初始化的順序 靜態的成員變數 普通的成員變數 構造器的呼叫。在派生類中 初始化的順序 呼叫基類的構造器 按宣告順序呼叫成員的初始化方法 呼叫派生類構造器主體 大多數類的初始化都是按照這些順序結合在一起的。下面是乙個例子 public class test extends sub publi...