記憶體對齊
常量摺疊
堆疊解退(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可以做為引數傳遞,那麼語句 段應該也可以作為引數傳遞。委託之於方法就像父類之於子類 委託就是乙個抽象化的方法型別定義 目的也是...