C 常用術語(後續補充)

2022-03-06 03:34:00 字數 1936 閱讀 6516

記憶體對齊

常量摺疊 

堆疊解退(stack unwinding) 

模板特化

模板偏特化 

模板例項化 

函式物件 

單一定義規則(one-definition rule,odr) 

自引用 

物件切片(object slicing)/

切割:當把乙個派生類物件賦給乙個基類物件時,會發生物件切割。(另外用基類物件強制轉換派生類物件也會),多型的實現是通過指標和引用;而物件的轉換只會造成物件切割,不能實現多型。

所有權語義(owership semantics) 

破壞性複製語義(distructive copy semantics) 

菱形繼承

向下強制:基類到派生類的轉換 

向上強制:派生類到基類的轉換 

交叉強制:從乙個基類向其兄弟類的強制(多重繼承中涉及) 

rtti:執行時型別資訊,dynamic_cast,type_info

謂詞:返回bool函式物件(或者函式),有一元謂詞和二元謂詞,標準庫中有謂詞 

活動記錄(activation record) 

堆疊幀(stack frame)/呼叫棧 

using宣告與using指令 

記憶體中編譯(in-memory compilation) 

窺孔優化器(peephole optimizer) 

易碎的基類問題(fragile base-class problem) 

控制代碼類(handle class) 

可重入函式 

淺拷貝(shallow copy)與深拷貝 

返回值優化(return value optimization) 

引用計數(reference counting) 

寫拷貝/寫時複製(copy-on-write) 

扇出(fan-out) 

重定義(redefining)

:子類重新定義父類中有相同名稱的非虛函式 ( 引數列表可以不同 ) 。 

覆蓋/重寫(overriding)

:父類與子類之間的多型性。子類重新定義父類中有相同名稱和引數的虛函式。 

過載(overload) 

多重指派(multiple dispatching) 

異常中立的(exception neutral) 

模板元程式設計 

穩定排序與不穩定排序 

惰性初始化(lazy initialization) 

多重賦值 

函式呼叫棧(function call stack) 

逆變性與協變返回型別 

繼承樹 

資源獲取即初始化raii(resource acquisition is initialization)

關聯名字查詢adl

記憶體洩露(memory leak) 

野指標(wildpointer) 

liskov置換原則:

定義1:如果對每乙個型別為 t1的物件 o1,都有型別為 t2 的物件o2,使得以 t1定義的所有程式 p 在所有的物件 o1 都代換成 o2 時,程式 p 的行為沒有發生變化,那麼型別 t2 是型別 t1 的子型別。

定義2:所有引用基類的地方必須能透明地使用其子類的物件。

黎克特制替換原則通俗的來講就是:子類可以擴充套件父類的功能,但不能改變父類原有的功能。它包含以下4層含義:

子類可以實現父類的抽象方法,但不能覆蓋父類的非抽象方法。

子類中可以增加自己特有的方法。

當子類的方法過載父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入引數更寬鬆。

當子類的方法實現父類的抽象方法時,方法的後置條件(即方法的返回值)要比父類更嚴格。

短路求值(short-circuit evaluation)

返回值優化(return value optimization rvo)

koenig查詢:名字查詢規則

C 常用術語(後續補充)

記憶體對齊 常量摺疊 堆疊解退 stack unwinding 模板特化 模板偏特化 模板例項化 函式物件 單一定義規則 one definition rule,odr 自引用 物件切片 object slicing 切割 當把乙個派生類物件賦給乙個基類物件時,會發生物件切割。另外用基類物件強制轉換...

後續補充部分

後端還差很多 主要在於 1 沒有對知識進行分類和梳理 只知道複製不知道原理 感覺不是自己的 不屬於自己 不熟練 2 對框架的搭建不熟悉 不會搭建 這個問題在前端vue也有 感覺不爽 3 不開心 感覺壓抑 沒多少人說話的感覺 4 其實想重點發展後端 不太想一直寫前端 不過寫業務 都是差不多了 就是感覺...

C 委託與事件 後續補充

針對昨天文章 委託 讓方法可以跟簡單物件一樣作為引數進行傳遞,也就是將方法作為引數進行封裝。方法 本質就是 段 其實也好理解,目的就是為了封裝,多型,既然簡單物件如int i可以做為引數傳遞,那麼語句 段應該也可以作為引數傳遞。委託之於方法就像父類之於子類 委託就是乙個抽象化的方法型別定義 目的也是...