C 建構函式

2022-04-06 16:39:34 字數 1689 閱讀 2634

建構函式的命名方式

建構函式的名字必須與類名同名,而不能由使用者任意命

名,以便編譯系統能識別它並把它作為建構函式處

理。有關建構函式的使用,有以下說明:

(1) 在類物件進入其作用域時呼叫建構函式。

(2) 建構函式沒有返回值,因此也不需要在定義構

造函式時宣告型別,這是它和一般函式的乙個重要

的不同之點。

(3) 建構函式不需使用者呼叫,也不能被使用者呼叫。

(4) 在建構函式的函式體中不僅可以對資料成員賦

初值,而且可以包含其他語句。但是一般不提倡在

建構函式中加入與初始化無關的內容,以保持程式

的清晰。

(5) 如果使用者自己沒有定義建構函式,則c++

會自動生成乙個建構函式,只是這個建構函式的函

數體是空的,也沒有引數,不執行初始化操作。

(1) 帶引數的建構函式中的形參,其對應的實參

在定義物件時給定。

(2) 用這種方法可以方便地實現對不同的物件進

行不同的初始化。

#includeusing

namespace

std;

class

box;

box::box(

int h,int w,int

len)

intbox::volume()

intmain()

view code

用引數初始化表對資料成員初始化c++還提供另一種

初始化資料成員的方法————引數初始化表來實現對

資料成員的初始化。這種方法不在函式體內對資料成員初始化,而是在函式首部實現。例如例

定義建構函式可以改用以下形式:

box box(int h,int w,int len):height(h) width(w) length(len)

這種寫法方便、簡練,尤其當需要初始化的資料成

員較多時更顯其優越性。甚至可以直接在類體中(而不是在類外)定義建構函式

建構函式的過載

在乙個類中可以定義多個建構函式,以便對類物件

提供不同的初始化的方法,供使用者選用。這些構造

函式具有相同的名字,而引數的個數或引數的型別

不相同。這稱為建構函式的過載。

#includeusing

namespace

std;

class

box//

宣告乙個有引數的建構函式

intvolume();

private

:

intheight;

intwidth;

intlength;

};box::box()

intbox::volume()

intmain()

view code

(1) 呼叫建構函式時不必給出實參的建構函式,稱

為預設建構函式(default constructor)

顯然,無參的建構函式屬於預設建構函式。乙個類只能有乙個

預設建構函式。

(2) 如果在建立物件時選用的是無參建構函式,應

注意正確書寫定義物件的語句。

(3) 儘管在乙個類中可以包含多個建構函式,但是

對於每乙個物件來說,建立物件時只執行其中乙個

建構函式,並非每個建構函式都被執行。

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關鍵字 時,系統回自動呼叫給類的建構函式初始化新...