C++ 類的成員函式
阿新 • • 發佈:2022-05-05
六個特殊的成員函式
- 建構函式
儘可能使用列表初始化
constructor():...{}
why?:列表初始化呼叫的是複製建構函式,對大多數型別複製構造比構造快;對fundamental-types兩者一樣快 - 解構函式
記得使用虛擬函式(要做基類而且要實現多型的話),以防止呼叫基類解構函式不完全析構導致的記憶體洩漏(換句話說當有有虛擬函式時定義解構函式為虛擬函式)
同理,不要試圖繼承沒有虛解構函式的類
remark1:使用虛擬函式會使指向例項的指標帶有虛指標(vptr)[用於儲存型別],導致指標大小增加50~100%,此時若向其它語言的程式傳輸指標(如C)會出問題,需要停用虛擬函式(因為vptr不能和指標分割)
remark2 - 複製建構函式
- 複製運算子
- 移動建構函式
- 移動賦值運算子
- 若定義了移動建構函式和移動賦值運算子,則不會提供預設複製建構函式和複製運算子,反之同理; 使用
default
讓編譯器幫你生成預設函式(能偷懶為什麼不呢) - 禁用複製||移動建構函式(運算子):宣告但不定義為private或使用
delet
關鍵字