建構函式和析構函式
構造:初始化 析構: 清理
建構函式的語法:類名(){} 析構函式語法:~類名(){}
1.建構函式沒有返回值也不寫void 1.建構函式沒有返回值也不寫void
2.函式名稱與類名相同 2.函式名稱與類名相同,在名稱前加~
3.建構函式可以有引數,也可以過載 3.建構函式不可以有引數,不可以過載
4.程式在呼叫物件時會自動呼叫構造,無需手動呼叫,且只會呼叫一次 4.物件銷毀前會自動呼叫析構函式,無須手動呼叫,呼叫一次
建構函式的分類及呼叫
按引數分:有參構造和無參構造(預設構造)
按型別分:普通構造和拷貝構造 三種呼叫方法:括號法;顯示法;隱式轉換法;
拷貝建構函式語法:類名(const 類名 &變數)
括號法注意:呼叫無參建構函式不能加括號,如果加了編譯器會認為是乙個函式宣告。
隱式轉換法注意: 不能利用拷貝建構函式 初始化匿名物件,編譯器會認為是物件宣告。
拷貝建構函式的呼叫時機:
三種情況:使用乙個已經建立完畢的物件來初始化乙個新物件
值傳遞的方式給函式引數傳值
以值方式返回區域性物件
構造函式呼叫規則:
如果使用者定義有參建構函式,c++不再提供預設無參構造,但是會提供預設拷貝構造/
如果使用者定義拷貝建構函式,c++不再提供其他建構函式『/
建立乙個類,c++編譯器至少給每個類新增三個函式:
預設構造(空實現) 析構函式(空實現) 拷貝建構函式(值拷貝)
C 物件的初始化和清理
物件的初始化和清理也是兩個非常重要的安全問題 乙個物件或者變數沒有初始狀態,對其使用後果是未知 同樣的使用完乙個物件或變數,沒有及時清理,也會造成一定的安全問題 c 利用了建構函式和析構函式解決上述問題,這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。物件的初始化和清理工作是編譯器強制要我...
C 類和物件 物件的初始化和清理
4.2.1 建構函式和析構函式 物件的初始化和清理也是兩個非常重要的安全問題 乙個物件或者變數沒有初始狀態,對其使用後果是未知 同樣的使用完乙個物件或變數,沒有及時清理,也會造成一定的安全問題 c 利用了建構函式和析構函式解決上述問題,這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。物件的...
java 初始化和清理
區別過載方法可通過 1.引數不同 2.引數相同,順序不同 過載的引數是基本型別時,可提公升也可窄化轉換 char型略不同,公升至int型 package com.learn public class demo06 class dog public void bark float f,int x pu...