程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 由始至終----構造與析構(轉轉)

由始至終----構造與析構(轉轉)

編輯:關於JSP

由始至終
                         ----構造與析構
作者:HolyFire
我們在平時的生活中一般會總結出一些規律,早上起床會刷牙洗臉,晚上會洗澡睡覺,這些都成了慣例。使用瓶裝調味品時先將瓶蓋打開,用完後將瓶蓋蓋上。這是一種好習慣。但是有些人不同,他們往往偷懶,一個常常不刷牙不洗臉不洗澡的人會有體味,東西放得亂七八糟的人生房間很不整潔。這些都是我們不希望看到的。當然編程中我們也不希望代碼亂七八糟。
使用一個未初始化的變量簡直就是災難,使用一個未初始化的指針將導致崩潰。這是我的忠告。在C++中初始化不會有附加的效果,不會降低效率,我們要做的是養成好習慣,產生一個對象的時候就將它初始化。
對於
Object.Init();
Object.Free();
這樣的調用並不是很困難,要記住他也不是難事,但是誰都不能保證他永遠不會忘記,更糟糕的是
Object.Init();
Object.Free();
沒有配對使用
Object.Init();
Object.Free();
Object.Free();

Object.Init();
Object.Init();
Object.Free();
會帶來什麼樣的結果,誰也不知道,而且這樣的錯誤,編譯器不會報錯。這是多麼可怕的錯誤,一個程序員最怕遇上的就是這樣的邏輯錯誤,它可能為了找這樣的一個錯誤花上一整天時間。
讓我們看看有什麼好的辦法。
一個對象按時間來分析,一般有三個階段,出生,活動,死亡。與我們要做的有什麼相關之處呢,初始化,運行,釋放。很好,對照一下,我們發現在對象出生的時候初始化,死亡的時候釋放,如果這一切能用這樣的機制來操作,我們就再也不用擔心會由於忘記或錯誤的使用帶來麻煩了。
C++裡就提供了這樣的機制。使用他有個約定
class Object{
public:
       Object();   //與類同名的函數,該函數沒有返回值,叫做構造函數
~Object();  //類似的,在構造函數名前加一個取反符號,叫做析構函數
};
構造函數將在對象產生的時候調用
析構函數將在對象銷毀的時候調用
調用的過程和實現方法由編譯器完成,我們只要記住他們調用的時間就行了,而且他們的調用是自動完成的,不需要我們控制。
#include <iostream>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved