C 建構函式 概念性的東西 自己的理解

2021-08-07 23:19:35 字數 876 閱讀 2231

1.建構函式主要用來建立物件時完成物件屬性初始化的一系列操作,當建立物件時,物件會自動呼叫它的建構函式。

一般來說,建構函式有三個作用:

2.當使用者沒有顯示的去定義建構函式時,編譯器會為類生成乙個預設的建構函式,稱為「預設建構函式」,預設建構函式不可以完成物件資料成員的初始化,只能給物件建立乙個識別符號,並為物件中的資料成員開闢一定的記憶體空間。

3.在大多數情況下,在物件建立完成之後,我們需要對一些成員進行初始化,預設的建構函式無法滿足,所以需要顯示定義乙個建構函式來覆蓋掉預設的建構函式來完成初始化的工作,當使用者自定義建構函式後,編譯器就不會再為物件生成預設的建構函式。建構函式的名稱與類名相同,並且沒有返回值型別和返回值。

4.顯示建構函式的定義可以在類內或類外進行。

5.對於有引數的建構函式可以利用傳入的函式對成員屬性進行初始化

6.建構函式的初始化可以在建構函式的函式頭後面通過單個冒號:引出的就是初始化表。

point(int x = 0, int y = 0

):xpos(x), ypos(y) // 使用初始化表

7.析構函式。

與建構函式相反,析構函式是在物件被撤銷時自動呼叫,用於對成員撤銷的一些清理工作,析構函式名與類名相同,緊貼在名稱前面用波浪號~與建構函式進行區分,析構函式沒有返回型別,也不能指定引數,析構函式只有乙個,不能被過載。當物件被銷毀時析構函式被自動呼叫,析構函式可以被顯示的呼叫,以釋放物件中動態申請的記憶體。

當使用者沒有顯示定義析構函式時,編譯器同樣會為物件生成乙個預設的析構函式,但是預設生成的析構函式只能釋放類的普通資料成員所佔的空間,無法釋放通過new或malloc進行申請的空間,因此有時候我們需要自己顯示的定義析構函式對這些申請的空間進行釋放,避免造成記憶體洩漏。

參考 

Socket 通訊的概念性過程

1.socket 通訊tcp方式一般流程圖 服務端 客戶端 socket socket setsockopt bind connect listen recv send write accept recv send read setsockopt的可用level為sol socket option為...

scala spray 概念性內容的總結

spray 是基於 akka 的輕量級 scala 庫,可用於編寫 rest api 服務。了解 spray 的 dsl 後可以在很短的時間內寫出乙個 rest api 服務,它的部署並不需要 tomcat apche 等容器,可以直接 run。對於每乙個 route,spray 都會 sprawn...

1 符號的概念性應用

說到人類的語言,人們不會吝嗇讚美之辭,人為萬物之靈,語言是關鍵的因素。語言滲透於人類精神生活的各個側面,以文字應用為例 作家用文字創作 詩人用文字寫詩寫詞 家用文字為歌曲填詞 歷史工作者用文字記載人類重大活動 科學工作者用文字記錄實驗過程結果並發表觀點理論 哲學家用文字表述種種思辨 語言學家用文字表...