c++建構函式和解構函式的區別?
什麼是建構函式?通俗的講,在類中,函式名和類名相同的函式稱為建構函式。它的作用是在建立一個物件時,作某些初始化的工作(例如對資料賦予初值)。C++允許同名函式,也就允許在一個類中有多個建構函式。如果一個都沒有,編譯器將為該類產生一個預設的建構函式。
建構函式上惟一的語法限制是它不能指定返回型別,甚至void 也不行。
不帶引數的建構函式:一般形式為 類名 物件名(){函式體}
帶引數的建構函式:不帶引數的建構函式,只能以固定不變的值初始化物件。帶引數建構函式的初始化要靈活的多,通過傳遞給建構函式的引數,可以賦予物件不同的初始值。一般形式為:建構函式名(形參表);
建立物件使用時:類名 物件名(實參表);
建構函式引數的初始值:建構函式的引數可以有預設值。當定義物件時,如果不給出引數,就自動把相應的預設引數值賦給物件。一般形式為:
建構函式名(引數=預設值,引數=預設值,……);
解構函式:
當一個類的物件離開作用域時,解構函式將被呼叫(系統自動呼叫)。解構函式的名字和類名一樣,不過要在前面加上 ~ 。對一個類來說,只能允許一個解構函式,解構函式不能有引數,並且也沒有返回值。解構函式的作用是完成一個清理工作,如釋放從堆中分配的記憶體。
一個類中可以有多個建構函式,但解構函式只能有一個。物件被析構的順序,與其建立時的順序相反,即後構造的物件先析構。