一.建構函式
何時呼叫建構函式:
class1 cl=new class1();
new運算子為物件分配記憶體,然後再呼叫物件的建構函式。 1.
建構函式:無返回值
與類同名,可以過載,在生成類的例項時呼叫,可以初始化字段,當然也可以加入**獲取目前生成的例項數
class mode
} 2.靜態建構函式:初始化靜態成員變數
class mode
static
mode() //
可以無型別修飾符,只在類載入時呼叫一次
} 2. const
和readonly 字段
1)const
隱式靜態,必須
/只能在宣告時賦初值,每個類只有乙個拷貝
public const uint ex=10;
public static const uint ex=10; //錯誤
2)readonly
字段更加靈活, 1
)可以在建構函式中賦初值,可以是例項字段,
和字段類似,不過在建構函式外不能更改值 2
)如果要把
readonly
設定為靜態,就必須顯式宣告
public static readonly uint ex=10; //正確
4 從其他建構函式中呼叫建構函式(利用方法的過載)
class mode
public mode(int a) //
可以無型別修飾符,只在類載入時呼叫一次
} 5 派生類的建構函式
建構函式的呼叫順序是先呼叫
system.object ,
再按照層次結構由上向下進行,直到到達要例項化的類為止。還要注意在這個過程中,每個建構函式都初始化它自己類中的字段。(可見,若有派生類建構函式不能宣告為
private)
在類中定義有參建構函式可以強制使用者初始化字段
(而不是由系統設為空)
派生類預設呼叫其基類的無參建構函式。若其基類無無參建構函式(即顯式定義了有參建構函式),則需要在派生類的建構函式中顯式呼叫其基類的有參建構函式。
class base
} class mode
:base
} 二析構函式
清理:析構函式(c++開發人員擴充套件了析構函式的用法,不僅用於清理資源,還提供除錯資訊)
c#中由無用儲存單元收集系統清理資源,不能預計析構函式會在什麼時候執行,一般情況下不鼓勵使用。
但在幾種情況下使用:當刪除變數時,需要採取一些措施(例如檔案、資料庫的閉合連線:是否無用儲存單元收集系統無法處理,無用儲存單元收集系統只是清理記憶體不用的
/
超過作用域的物件、變數。而檔案、資料庫是不由。
net
管理的資源。在作業系統中還保持連線狀態
)
1) 200
頁finalize()
方法:傳統意義的析構函式(工作方式:由無用儲存單元收集系統在檢測到例項已不再被引用時,就隱式呼叫
finalize()
方法(客戶程式無法控制) )
但finalize()
方法缺乏確定性和對無用儲存單元收集器效能的影響。所以應使用
dispose()
和close()方法
2) 200
頁dispose()
和close()方法
很大程度上是一種約定,不是
c#語言的一部分,但對於
dispose()
方法,在
c#中有一些內部支援。
工作方式:應該明白任何客戶機**都應顯式呼叫這個方法,來釋放資源。
優點:資源在不需要時立即被釋放,這對於象獨佔檔案鎖那樣的物件來說是非常好的
缺點:客戶機**必須正常工作,並且呼叫該方法,如果不是這樣,就被捆在這裡
dispose()
和close()
方法之間的區別大體上是乙個約定:
close()
:主要用於指定資源可能以後會再次開啟。適合於關閉檔案、資料庫的連線
dispose()
:是一種最終處理,呼叫
dispose()
意味著客戶機**最終會刪除這個物件。適合於釋放各種
gdi或其他
windows
物件的控制代碼,
詳細202頁如果要利用
idisposable
結構,也可以自動
dispose()
,即通過
using
關鍵字。
總結:可見對於存在檔案、資料庫、
gdi
或其他
windows
物件的控制代碼是不由。
net
管理的資源,在物件銷毀後,要
顯式呼叫這個dispose()方法。或close()(不需要重寫析構函式)
C 建構函式 析構函式 虛析構函式
一般地,建立物件和刪除物件時,父類建構函式 子類建構函式 子類析構函式 父類析構函式。特例 如果用new建立了乙個物件,並將父類的指標指向這個子類的物件,那麼用delete撤銷物件時,系統只執行基類的析構函式,而不執行派生類的析構函式。如果希望按照子類析構函式 父類析構函式的順序執行,那麼應該將基類...
C 構造 析構函式
建構函式 與普通函式相比有三點不同。和定義的結構體 類名字完全一樣。沒有返回值。呼叫的時機 建立乙個物件的時候,對結構體內的物件賦值,初始化用的。而成員函式print 是建立完物件再呼叫。建構函式不是必須有的,但是一旦定義了建構函式,在建立物件的時候必須要用,否則報錯。如果即想有建構函式,建立物件的...
C 建構函式,析構函式
一 建構函式 在建立類的物件時自動呼叫的乙個函式,主要是為物件本身做初始化工作 沒有返回值,名字和類的名字相同,因為是在建立物件時候自動呼叫的,所以必須型別為public的,可以帶引數,可以有多個 如果類中沒有建構函式,在下面三種情況下,會自動的新增預設的建構函式 1.如果類中有虛函式,或者類中有虛...