在 C++ 中使用三原則


三原則是在使用 C++ 時的一個經驗法則。這是一條善意的做法規則,即如果你的類需要以下任何一個:

  • 複製建構函式,
  • 賦值運算子,
  • 或解構函式,

顯式定義,則很可能需要所有三個。

這是為什麼?這是因為,如果你的類需要上述任何一個,則它正在管理動態分配的資源,並且可能需要其他資源才能成功實現這一目的。例如,如果你需要一個賦值運算子,你將建立當前透過引用複製的物件的副本,從而分配資源。你將需要複製建構函式來複制和解構函式來釋放這些資源。

1. 複製建構函式 - 編譯器提供的複製建構函式對 Foo Manager 的所有屬性進行逐一複製。這和賦值運算子帶來的問題是一樣的。

2. 賦值運算子 - 如果你不提供一個,編譯器將建立一個預設的賦值運算子。預設賦值運算是一個逐一複製函式,進行淺複製而非深複製。這可能會導致記憶體洩漏、錯誤賦值等問題。

3. 解構函式 - 當這個管理器超出範圍時,它應該釋放它管理的所有資源。

更新於: 2019 年 7 月 30 日

239 次瀏覽

啟動你的 職業生涯

完成課程獲得認證

開始了
廣告
© . All rights reserved.