c 中重要概念的總結

2021-06-08 09:39:27 字數 1445 閱讀 6841

定義:

要分來理解:

變數的定義:用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中變數有且僅有乙個定義。《c++ prime》 2.3.5

類定義:一旦遇到右花括號,類的定義就結束了。我們一旦定義了類,我們就知道了所有的類成員,以及儲存該類的物件所需的儲存空間。《c++ prime》12.1.4。(一般而言)定義型別是不進行儲存分配。《c++ prime》12.1.5。這就是為什麼2.3.5中對定義的說明單單解釋成變數的定義,而不是范范的說明什麼是定義。

宣告:

用於向程式表明變數的型別和名字。定義也是宣告:當定義變數時我們宣告了它的型別和名字。

標頭檔案:

標頭檔案一般包含類的定義、extern變數的宣告和函式的宣告

標頭檔案用於宣告而不是用於定義。這句話是對extern變數和函式說的。有三個例外,標頭檔案可以定義類、值在編譯階段就已知道的const物件和inline函式。這些實體可在多個原始檔中定義,只是每個原始檔中的定義是相同的。《c++ prime》 2.9.1

在乙個給定的原始檔中,乙個類只能被定義一次,如果在多個檔案中定義乙個類,那麼每個檔案中的定義必須是完全相同的。

將類定義放在乙個標頭檔案中,可以保證每個使用類的原始檔中以同樣的方式定義類。使用標頭檔案保護符,來保證即使標頭檔案在同一檔案中包含多次,類定義也只出現一次。

我的理解是:每個原始檔都可以使用同乙個類定義,前提是類定義是一致的。這可以通過將類定義放在標頭檔案中讓所有需要該類定義的原始檔include進來就ok。

同時,用標頭檔案保護符,可以保證標頭檔案在同一檔案中包含多次,類定義也只出現一次。最後連線成的可執行程式中通過標頭檔案保護符也同樣保證了這整個上下文中只有乙個類定義 。《c++ prime》12.1.4

初始化:

初始化是指建立變數並給它賦初始值。《c++ prime》2.3.4 定義物件

賦值:

則是擦除物件的當前值並用新值代替。《c++ prime》2.3.4 定義物件

類物件建立的過程:

1)為物件分配記憶體。

2)呼叫建構函式來初始化那個記憶體。

可以這麼理解:類物件建立時,必將執行建構函式的初始化階段。該階段用初始化列表進行賦初始化值。如果初始化列表中沒有列舉,按照如下規則初始化:

1)如果是類型別,執行該型別的預設建構函式,來初始化類型別的資料成員。

2)如果是內建或復合型別(結構體、陣列等)的成員的初始值依賴於物件的作用域:區域性作用域中這些成員不被初始化 ,而在全域性作用域中它們被初始化為0

之後將執行建構函式的普通計算階段,既是對類物件成員的賦值了。

C 重要概念

純虛函式不需定義其實際操作,它的存在只是為了在派生類中被重新定義。既然抽象類中的虛函式不打算被呼叫,我們就不應該定義它,應該把它設 為純虛函式 在函式宣告之後加上 0 即可 virtual void display 0 多型 以單一指令呼叫不同函式,這種性質稱為多型。虛函式派生下去仍為虛函式,而且可...

Redux中的重要概念

首先,先看看第一張圖,圖中展示了redux的單向資料流,以及action reducer和store這三個核心概念。下面就圍繞上圖,非別介紹action reducer和store這三個概念。action是乙個物件,用來代表所有會引起狀態 state 變化的行為 例如服務端的響應,頁面上的使用者操作...

tensorflow中的重要概念

1.checkpoint model.ckpt.data 00000 of 00001 某個ckpt的資料檔案,儲存每個變數的取值,儲存的是網路的權值,偏置,操作等。2.model.ckpt.index 某個ckpt的index檔案二進或其他格式,不可直接檢視,是乙個不可變的字串表,每乙個鍵都是張量...