?? 歡迎大家來訪Srlua的博文(づ ̄3 ̄)づ╭?~??🌟🌟 歡迎各位親愛的讀者,感謝你們抽出寶貴的時間來閱讀我的文章。
我是Srlua小謝,在這里我會分享我的知識和經驗。🎥
希望在這里,我們能一起探索IT世界的奧妙,提升我們的技能。🔮
記得先點贊👍后閱讀哦~ 👏👏
📘📚 所屬專欄:C/C++
歡迎訪問我的主頁:Srlua小謝 獲取更多信息和資源。??🌙🌙
???
???
目錄
類的6個默認成員函數
默認構造函數(Default Constructor):
特性 :
1. 函數名與類名相同。
2. 無返回值。
3. 對象實例化時編譯器自動調用對應的構造函數。
4. 構造函數可以重載
?5. 如果類中沒有顯式定義構造函數,則C++編譯器會自動生成一個無參的默認構造函數,一旦用戶顯式定義編譯器將不再生成。
?6.關于編譯器生成的默認成員函數,為什么在不實現構造函數的情況下,編譯器會生成默認的構造函數。但是看起來默認構造函數又沒什么用?d對象調用了編譯器生成的默認構造函數,但是d對象_year/_month/_day,依舊是隨機值。也就說在這里編譯器生成的默認構造函數并沒有什么用??
7.無參的構造函數和全缺省的構造函數都稱為默認構造函數,并且默認構造函數只能有一個。
析構函數(Destructor):
特性:
1. 析構函數名是在類名前加上字符 ~。
2. 無參數無返回值類型。
3. 一個類只能有一個析構函數。若未顯式定義,系統會自動生成默認的析構函數。
4. 對象生命周期結束時,C++編譯系統系統自動調用析構函數。
?5. 關于編譯器自動生成的析構函數,是否會完成一些事情呢?下面的程序我們會看到,編譯器生成的默認析構函數,對自定類型成員調用它的析構函數
?6. 如果類中沒有申請資源時,析構函數可以不寫,直接使用編譯器生成的默認析構函數,比如Date類;有資源申請時,一定要寫,否則會造成資源泄漏,比如Stack類。
類的6個默認成員函數
如果一個類中什么成員都沒有,簡稱為空類。
空類中真的什么都沒有嗎?并不是,任何類在什么都不寫時,編譯器會自動生成以下6個默認成員函數。
默認成員函數:用戶沒有顯式實現,編譯器會生成的成員函數稱為默認成員函數。
class A {};
默認構造函數(Default Constructor):
如果在類中沒有顯式地定義構造函數,編譯器會自動生成?一個默認構造函數。默認構造函數不接受任何參數,用于創建對象時進行初始化操作。?
class MyClass {
public:// 默認構造函數MyClass() {// 構造函數體}
};
對于以下Date類代碼示例:
對于Date類,可以通過 Init 公有方法給對象設置日期,但如果每次創建對象時都調用該方法設置信息,未免有點麻煩,那能否在對象創建時,就將信息設置進去呢?
構造函數是一個特殊的成員函數,名字與類名相同,創建類類型對象時由編譯器自動調用,以保證每個數據成員都有 一個合適的初始值,并且在對象整個生命周期內只調用一次。
特性 :
構造函數是特殊的成員函數,需要注意的是,構造函數雖然名稱叫構造,但是構造函數的主要任務并不是開空間創建對象,而是初始化對象。
特征如下:
1. 函數名與類名相同。
2. 無返回值。
3. 對象實例化時編譯器自動調用對應的構造函數。
4. 構造函數可以重載


5. 如果類中沒有顯式定義構造函數,則C++編譯器會自動生成一個無參的默認構造函數,一旦用戶顯式定義編譯器將不再生成。
不顯示定義,編譯器自動生成,
顯示定義
6.關于編譯器生成的默認成員函數,為什么在不實現構造函數的情況下,編譯器會生成默認的構造函數。但是看起來默認構造函數又沒什么用?d對象調用了編譯器生成的默認構造函數,但是d對象_year/_month/_day,依舊是隨機值。也就說在這里編譯器生成的默認構造函數并沒有什么用??
解答:C++把類型分成內置類型(基本類型)和自定義類型。
內置類型就是語言提供的數據類型,如:int/char...,自定義類型就是我們使用的class/struct/union等自己定義的類型,對于下面的程序,就會發現編譯器生成默認的構造函數會對自定類型成員_t調用的它的默認成員函數
7.無參的構造函數和全缺省的構造函數都稱為默認構造函數,并且默認構造函數只能有一個。
注意:無參構造函數、全缺省構造函數、我們沒寫編譯器默認生成的構造函數,都可以認為是默認構造函數。

對重載函數的調研不明確,有歧義!
析構函數(Destructor):
與構造函數對應,析構函數用于在對象銷毀時進行清理工作,釋放對象占用的資源。如果沒有顯式定義析構函數,編譯器也會生成一個默認的析構函數。對象在銷毀時會自動調用析構函數,完成對象中資源的清理工作。
class MyClass {
public:// 析構函數~MyClass() {// 析構函數體}
};
特性:
析構函數是特殊的成員函數,其特征如下:
1. 析構函數名是在類名前加上字符 ~。
2. 無參數無返回值類型。
3. 一個類只能有一個析構函數。若未顯式定義,系統會自動生成默認的析構函數。
注意:析構函數不能重載
4. 對象生命周期結束時,C++編譯系統系統自動調用析構函數。
5. 關于編譯器自動生成的析構函數,是否會完成一些事情呢?下面的程序我們會看到,編譯器生成的默認析構函數,對自定類型成員調用它的析構函數
6. 如果類中沒有申請資源時,析構函數可以不寫,直接使用編譯器生成的默認析構函數,比如Date類;有資源申請時,一定要寫,否則會造成資源泄漏,比如Stack類。
???
希望對你有幫助!加油!
若您認為本文內容有益,請不吝賜予贊同并訂閱,以便持續接收有價值的信息。衷心感謝您的關注和支持!