1. 把物件的初始化工作放在建構函式中,把清除工作放在析構函式中。當物件被建立時,建構函式被自動執行。當物件消亡時,析構函式被自動執行。這下就不用擔心忘了物件的初始化和清除工作。
2. 建構函式、析構函式與類同名,由於析構函式的目的與建構函式的相反,就加字首『~』以示區別。
3. 建構函式與析構函式都沒有返回值型別,這與返回值型別為 void 的函式不同。建構函式與析構函式的使命非常明確,就象出生與死亡,光溜溜地來光溜溜地去。如果它們有返回值型別,那麼編譯器將不知所措。為了防止節外生枝,乾脆規定沒有返回值型別。
4. 建構函式和析構函式只是為public.
建構函式
1. 建構函式最重要的作用是建立物件本身。
2. c++規定,每個類必須有乙個建構函式,沒有建構函式,就不能建立任何物件。
3. c++又規定,如果乙個類沒有提供任何的建構函式,則c++提供乙個預設的建構函式(由c++編譯器提供),這個預設的建構函式是乙個不帶引數的建構函式,它只負責建立物件,而不做任何的初始化工作。
4. 只要乙個類定義了乙個建構函式,不管這個建構函式是否是帶引數的建構函式,c++就不再提供預設的建構函式。也就是說,如果為乙個類定義了乙個帶引數的建構函式,還想要無引數的建構函式,則必須自己定義。
析構函式
1. 當乙個物件生命週期結束時,其所占有的記憶體空間就要被**,這個工作就由析構函式來完成。
2. 析構函式是「反向」的建構函式,析構函式不允許有返回值,更重要的是析構函式不允許帶引數,並且乙個類中只能有乙個析構函式。
3. 析構函式的作用正好與建構函式相反,物件超出其作用範圍,對應的記憶體空間被系統收回或被程式用delete刪除時,析構函式被呼叫。
4. 根據析構函式的這種特點,我們可以在建構函式中初始化物件的某些成員變數,給其分配記憶體空間(堆記憶體),在析構函式中釋放物件執行期間所申請的資源。
類的構造與析構函式
每個類都有建構函式和析構函式。即使使用者建立的類,系統也會為該類建立預設的建構函式。建構函式不能是虛函式。在物件導向語言裡,這兩個函式特別重要。物件導向的語言裡,其成員變數和函式都屬於物件 除了靜態全域性變數和靜態函式 我們知道類不能夠直接在定義時對其成員變數進行初始化,這部分工作一部分統一放到建構...
類的建構函式與析構函式
建構函式 對於類物件成員的初始化我們始終是建立成員函式然後手工呼叫該函式對成員進行賦值的,那麼在c 中對於類來說有沒有更方便的方式能夠在物件建立的時候就自動初始化成員變數呢,這一點對操作保護成員是至關重要的,答案是肯定的。關於c 類成員的初始化,有專門的建構函式來進行自動操作而無需要手工呼叫。類建構...
類的建構函式與析構函式
類的建構函式與析構函式 include 所有的類預設都有乙個建構函式,析構函式 建構函式,過載,沒有返回值,class myclass myclass int data 建構函式可以過載 myclass void run void main1 explicit 關鍵字 控制函式不能採用型別轉換 in...