C 建構函式

2021-06-24 12:00:41 字數 3394 閱讀 9709

建構函式分為:

1.例項建構函式

2.私有建構函式

3.靜態建構函式

建構函式是一種特殊的方法,主要是為了給初始化物件賦初值。

1.例項建構函式

使用new

表示式建立某個類

的物件時,會使用例項建構函式建立和初始化所有例項成員變數。

public

class

programtest",

j);}static

void

main(

string

args)

結果為:i am programtest,4

在此次實驗中,我們首先定義了乙個私有成員j,經過初始化給他賦了乙個初值4,當我例項化類programtest時,就會執行例項建構函式。

諸如此類不帶引數的建構函式叫「預設建構函式」,

如果某個類沒有建構函式,則會自動生成乙個預設建構函式,並使用預設值來初始化物件字段。

public

class

programtest

", j);

}static

void

main(

string

args)

}結果為:i am programtest,0

也可以建立帶有引數的建構函式

public

class

programtest

,j="

,i, j);

}static

void

main(

string

args)

結果為:i am programtest i=1,j=2

那若是乙個類中既有無參建構函式,又有有參建構函式那會怎麼樣呢?

public

class

programtest

", j);

}public

programtest(

inti)

,j="

,i, j);

}static

void

main(

string

args)

結果為:i am programtest 預設建構函式 j=

3i am programtest 有參建構函式 i=1,j=2

可見,若是兩者同時存在,那麼看類例項化時,是怎麼例項的。

2.私有建構函式

私有建構函式是一種特殊的例項建構函式。

它通常用在只包含靜態成員的類中。

如果類具有乙個或多個私有建構函式而沒有公共建構函式,則其他類(除巢狀類外)無法建立該類的例項。

public

class

test

}public

class

programtest

", j);

}static

void

main(

string

args)}

結果:這時你會發現編譯器會提示你,你無法建立test的例項

(即使你在test類中新增乙個靜態成員,結果依然會提示

因為該建構函式受其保護級別的限制而不可訪問)

若是只在自己類裡有私有類呢?

public

class

programtest

", j);

}static

void

main(

string

args)}

結果:i am progranmtest 預設建構函式,j=3

注意,如果您不對建構函式使用訪問修飾符,則在預設情況下它仍為私有建構函式。

但是,通常顯式地使用private

修飾符來清楚地表明該類不能被例項化。

若是乙個類中既有

例項建構函式又有私有建構函式,那麼當例項物件是會怎麼執行呢?

public

class

test

", i);

}public

test(

inti)

", i);}}

public

class

programtest

", i);

}public

test(

inti)

", i);}}

public

class

programtest}

結果:i am test 有參建構函式 i=2

3.靜態建構函式

靜態建構函式用來初始化靜態變數,這個建構函式是屬於類的,而不是屬於哪個例項的。

就是說這個建構函式只會被執行一次。也就是在建立第乙個例項或引用任何靜態成員之前,由.net自動呼叫。

public

class

test

", i);}}

public

class

programtest}

結果為:i am test 預設建構函式 i=1

靜態建構函式的特點:

1.靜態建構函式既沒有訪問修飾符,也沒有引數。 2.

在建立第乙個例項或引用任何靜態成員之前,將自動呼叫靜態建構函式來初始化類,也就是無法直接呼叫靜態建構函式,也無法控制什麼時候執行靜態建構函式。

3.乙個類只能有乙個靜態建構函式,最多只能執行一次。

4.靜態建構函式不可以被繼承。

5.如果沒有靜態建構函式,而類中的靜態成員有初始值,那麼編譯器會自動生成預設的靜態建構函式。

如果靜態預設建構函式和公有預設建構函式同時存在,會怎麼樣呢?

public

class

test

", i);

}public

test()

", i);}}

public

class

programtest}

結果:i am test 靜態預設建構函式 i=1

i am test 公有預設建構函式 i=1

如果靜態預設建構函式和公有有參建構函式同時存在,我例項化類讓它呼叫靜態預設建構函式會怎麼樣呢?

public

class

test

", i);

}public

test(

intj)

", j);}}

public

class

programtest

", i);

}public

test(

intj)

", j);}}

public

class

programtest}

結果:i am test 靜態預設建構函式 i=1

i am test 公有有參建構函式 j=2

C 建構函式 拷貝建構函式

建構函式 class base private int m var 建構函式無返回值型別,函式名和型別相同。拷貝建構函式傳遞引數為引用。1 class base2 7 拷貝建構函式 8 base base ref m var ref m var 9 11 private 12 intm var 13...

C 構造器(建構函式)

定義和作用 構造器是在構建類的 引用時 自動執行的方法。所以,每個類都必須至少要有乙個構造器。在訪問乙個類的時候,編譯器最先執行構造器中的 它與類同名,帶引數的構造器能夠獲取引數,但是與方法不同的是 構造器雖然也是一種 例項型別 即必須通過例項來進行呼叫,也可以稱之為引用型別 但是卻不能返回任何值 ...

C 建構函式

建構函式是一種特殊的成員函式,它主要用於為物件分配儲存空間,對資料成員進行初始化.1 建構函式的名字必須與類同名 2 建構函式沒有返回型別,它可以帶引數,也可以不帶引數 3 建構函式的主要作用是完成對類的初始化工作 4 在建立乙個類的新物件 使用new關鍵字 時,系統回自動呼叫給類的建構函式初始化新...