什麼是建構函式

2021-06-08 02:04:31 字數 1446 閱讀 5532

在建立物件的時候,能否給不同的物件靈活地賦予不同的屬性的初值,並保證沒有空值的出現?這個任務可以由建構函式來完成。

建構函式是類的一種特殊方法,它的特殊性主要體現在如下的幾個方面:

(1)建構函式的方法名與類名相同。

(2)建構函式沒有返回型別。

(3)建構函式的主要作用是完成對類物件的初始化工作。

(4)建構函式不能由程式設計人員顯式地直接呼叫。

(5)在建立乙個類的新物件時,系統會自動呼叫該類的建構函式為新物件初始化。

下面看乙個簡單的例子:

protected void page_load(object sender, eventargs e)

class student

}

結果輸出:學生資料:

可見,student類的建構函式叫做student(),他沒有返回型別,但是可以擁有方法的修飾符,也可以利用引數列表輸入有關資訊,如下面的例子就是呼叫建構函式時傳入name引數:

protected void page_load(object sender, eventargs e)

class student

}

建構函式的呼叫是在用new運算子建立類物件時由系統自動完成的,建構函式的引數傳遞和形實結合過程也是由系統在呼叫的時候同時自動完成。建構函式在程式設計中非常有用,它可以為類的成員變數進行初始化工作,很多程式設計師在程式設計過程中時常會疏忽對變數的初始化,使用建構函式可以避免這種情況,並且可以實現一次完成對類的所有例項物件的初始化,這免除了呼叫程式對每個例項物件都要進行初始化的繁瑣工作。建構函式另乙個作用是引入更多的靈活度,使得初始化工作不僅僅包括成員變數的賦值,還可以有更複雜的操作,如判斷條件是否成立,若不成立跳出。

申明類時,可以不定義建構函式,此時系統會自動為該類生成乙個預設的建構函式,這個建構函式的名字與類名相同,它沒有任何形式引數,也不完成任何操作。

這裡你可能會問,為什麼建構函式名一定要與類名相同,你換個角度想下,編譯時必須知道哪個是建構函式,採用與類同名的方式顯然是最簡單最合理的。

需要注意的是:我們知道建構函式是不返回值的,但你不可以加void,加了的話就不是建構函式了,而是普通函式,加了的話這個函式就不會被自動呼叫了,很可能會出現這樣的錯誤:

成員名稱不能與它們的封閉型別相同

例:

class renlei //新增乙個"人類"的 類

~renlei() //這個方法叫 析構函式(特點:和類同名,前面加乙個"~")--好處是:剛把人造出來就乾掉了,好慘忍...嗚嗚

public void shuohua() //宣告了乙個一出生就說話的方法(當然,小孩不會說話了,只會哭wawawa...)

}class shangdizaoren //專案的命名空間(就是告訴你,專案的名稱是:shangdizaoren)

}

什麼是建構函式

簡單地說建構函式是類函式,函式名與類名完全相同,無返回值 建構函式屬於類的成員函式,除了具有一般成員函式的特點外,還具有自己的特點 1 是類的乙個特殊的成員函式,函式名與類名相同 2 訪問屬性應該是public 3 功能是初始化物件,在建構函式中一般不作初始化以外的事情 4 可以在類內定義,也可在類...

什麼是靜態建構函式

靜態建構函式初始化類 可以初始化static 欄位而不是const 字段 當類被裝載時由.net呼叫 不能被呼叫 沒有引數,沒有訪問修飾符 靜態建構函式 示例 struct pair static pair private int x,y 靜態建構函式使用注意 靜態建構函式只能由.net呼叫,而不能...

什麼是拷貝建構函式

拷貝建構函式是一種特殊的建構函式,它的形式如下。struct test test const test other 拷貝建構函式 以下幾種情況會呼叫拷貝建構函式。struct test test const test other 函式以類物件為引數,會呼叫test的拷貝建構函式 void testf...