C 建構函式詳解和析構函式詳解

2022-09-16 02:33:13 字數 2197 閱讀 2956

首先來了解下建構函式的定義:

c#建構函式是一種特殊的成員函式,它的作用主要用於為物件分配儲存空間,對資料成員進行初始化。

接下來看一下他的語法定義形式:

|訪問修飾符| 識別符號 (|引數列表|) |: base(|引數列表|)| |:this(|引數列表|)| 

解釋:識別符號:就是類名,並且必須是類名。

引數列表:就是方法或者函式的引數列表。

base:就是呼叫父類中的建構函式。

this:就是呼叫本身的其他建構函式。

看了上面的定義和語法形式,是不是很簡單大。

建構函式的細則如下:

1、建構函式的名字必須和類的名字相同。

2、建構函式可以使用訪問修飾符。

3、可以呼叫父類中的建構函式。

4、可以呼叫本身的其他建構函式。

5、建構函式沒有返回型別,不可以有返回值。

6、建構函式可以帶引數,也可以不帶引數。

7、建構函式可以過載。主要是根據引數的個數不同而引起的。

8、如果不顯示定義建構函式,則有預設的無參建構函式,此時建構函式的函式體是為空的。

9、靜態建構函式,必須用static修飾,用於初始化靜態變數。乙個類中,只允許有乙個建構函式。

10、如果有靜態建構函式,在例項化時載入,這時修飾符就失去作用了。

11、如果定義了,有引數的建構函式,最好也顯示頂乙個無參的建構函式。

上面說了這麼多,下面看乙個demo

public

class

base

}public

class

a :base

public a(string info) : base

()

}class

program

}

根據上面的這個demo,輸出的結果會是什麼樣的。這裡就引起了另外乙個問題。那就是子類本身和父類建構函式的構造順序是怎麼樣執行的。

我們來分析一下:

首先呼叫建構函式a()

然後呢,因為a()使用了this關鍵字,所以在還沒有進入函式體的是否就呼叫了this(

"hello

")也就是a(string

info)

這時候a(

string

info)建構函式被呼叫,但是由於該建構函式使用了base關鍵字,所以在沒有進入函式體就去呼叫它爸爸建構函式base()咯

然後呼叫完base()就依次的輸出結果咯,整個過程其實就是乙個壓棧然後取棧頂元素的過程

分析過之後,上面的執行結果就是:

爸爸的建構函式被呼叫啦~我是被其他構造函式呼叫的,它發過來字串hello 

我是可以呼叫基類和我的其他建構函式的類

接下類我們在學習一下 析構函式的用法:

析構函式的作用:垃圾**器,它用來清理物件時呼叫

析構函式的細則:

1、不能有引數

2、不能有任何修飾符而且不能被呼叫,它是自動呼叫的,這是它與建構函式的乙個主要區別。

3、由於析構函式的目的與建構函式的相反,就加字首『~』以示區別。

接下來我們先看下析構函式的用法:

public

class

base

~base()

}public

class

a :base

public a(string info) : base

()

~a()

}class

program

}

由於析構函式的作用也是銷毀物件的。

我們和dispose和close方法的區別; 

說明

析構函式

dispose

close

意義銷毀物件

銷毀物件

關閉物件資源

呼叫方式

不能被顯示呼叫

需要顯示呼叫或者通過using語句呼叫

需要顯示呼叫

呼叫時機

不確定確定

確定--------------------c#物件導向入門級教程--------------------------

C 建構函式,析構函式詳解

目錄 上期了解c 類中有public protected private三種訪問許可權。肯定會有人疑惑,c 為什麼要設定這三個許可權呢 本期內容就是圍繞上面的問題展開說明 開始的文章就提到過,類是 oop 物件導向程式設計的基礎 那麼物件導向程式設計究竟是個什麼東東呢 百科是這樣解釋的 通俗的來說就...

C 建構函式,析構函式,拷貝建構函式詳解

二 建構函式的分類及呼叫 三 拷貝構造函式呼叫時機 四 構造函式呼叫規則 五 深拷貝與淺拷貝 六 類物件作為類成員的呼叫規則 七 靜態成員 c 利用建構函式和析構函式進行物件的初始化和清理,這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。物件的初始化和清理工作是編譯器強制要我們做的事情,因...

類的建構函式和析構函式詳解

1.建構函式定義 類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。建構函式主要用於為物件分配空間,進行初始化。2.性質 1 建構函式的名字必須與類名相同 2...