1. 程式人生 > 其它 >C++ 類的成員函式

C++ 類的成員函式

六個特殊的成員函式

  • 建構函式

    儘可能使用列表初始化constructor():...{}
    why?:列表初始化呼叫的是複製建構函式,對大多數型別複製構造比構造快;對fundamental-types兩者一樣快

  • 解構函式

    記得使用虛擬函式(要做基類而且要實現多型的話),以防止呼叫基類解構函式不完全析構導致的記憶體洩漏(換句話說當有有虛擬函式時定義解構函式為虛擬函式)
    同理,不要試圖繼承沒有虛解構函式的類
    remark1:使用虛擬函式會使指向例項的指標帶有虛指標(vptr)[用於儲存型別],導致指標大小增加50~100%,此時若向其它語言的程式傳輸指標(如C)會出問題,需要停用虛擬函式(因為vptr不能和指標分割)
    remark2

    :純虛解構函式需要給出定義,不然連結器直接開擺(派生類解構函式會呼叫基類解構函式)

  • 複製建構函式
  • 複製運算子
  • 移動建構函式
  • 移動賦值運算子

  • 若定義了移動建構函式和移動賦值運算子,則不會提供預設複製建構函式和複製運算子,反之同理; 使用default讓編譯器幫你生成預設函式(能偷懶為什麼不呢)
  • 禁用複製||移動建構函式(運算子):宣告但不定義為private或使用delet關鍵字