C 關於建構函式初始化器的使用

2021-06-19 06:33:52 字數 1019 閱讀 9359

有時,在乙個類中有幾個建構函式,以容納某些可選引數,這些建構函式都包含一些共同的**。

例如,下面的情況: 

[csharp]view plain

copy

class

car    

public

car(

string

description)   

// etc. 

}  

這兩個建構函式初始化了相同的字段,顯然,最好把所有的**放在乙個地方。c#有乙個特殊的語法,稱為建構函式初始化器,可以實現此目的:

[csharp]view plain

copy

class

car   

public

car(

string

description) : 

this

(description, 4)  

// etc

}  

這裡,this關鍵字僅呼叫引數最匹配的那個建構函式。注意,建構函式初始化器在建構函式之前執行。現在假定執行下面的**: car mycar = new car("proton persona"); 在本例中,在帶乙個引數的建構函式執行之前,先執行帶2個引數的建構函式(但在本例中,因為帶乙個引數的建構函式沒有**,所以沒有區別)。

c#建構函式初始化符可以包含對同乙個類的另乙個建構函式的呼叫(使用前面介紹的語法),也可以包含對直接基類的建構函式的呼叫(使用相同的語法,但應使用base關鍵字代替this)。初始化符中不能有多個呼叫。 在c#中,建構函式初始化符的語法類似於c++中的建構函式初始化列表,但c++開發人員要注意,除了語法類似之外,c#初始化符所包含的**遵循完全不同的規則。可以使用c++初始化列表指定成員變數的初始值,或呼叫基類建構函式,而c#初始化符中的**只能呼叫另乙個建構函式。這就要求c#類在構造時遵循嚴格的順序,但c++就沒有這個要求。這個問題詳見第4章,那時就會看到,c#強制遵循的順序只不過是良好的程式設計習慣而已。

C 初始化器和建構函式初始化器

初始化器分為物件初始化器和集合初始化器。下面一一介紹。物件初始化器 物件初始化器的作用,簡單點說就是可以使我們初始化乙個類的 變得更簡潔。比如下面這個類 class person public int age public string address 我們要初始化它並對它賦值的話通常要這樣 per...

(C )建構函式初始化

vc 中的對於類的定義是有很大的不同。例如在.net程式中對於需要初始化的引數可以直接的賦值,而在vc 中對於需要初始化的引數則需要使用不同的方法。例如對於char字元則需要使用strcpy s函式賦值而相反對於布林型別 bool 整數型別 int 則可以使用運算子 對其初始化。1.定義乙個帶有引數...

C 建構函式初始化

建構函式後面增加冒號一般有三種作用 1 對成員變數的初始化 2 對類成員物件初始化 3 對父類進行初始化 include include using namespace std class a int get key int main 答案 class a 類物件初始化 int get key in...