C++ 運算子過載的基本規則和習慣用法是什麼?


在 C++ 中進行運算子過載時,您應該遵循 3 個基本規則。像所有此類規則一樣,也有一些例外。這三個規則是:

  • 1. 當運算子的含義並非顯而易見且沒有爭議時,不應進行過載。相反,應使用精心選擇的名稱提供一個函式。基本上,運算子過載的首要規則的核心是
  • 不要這樣做。
  • 這可能看起來很奇怪,但只有在少數情況下運算子過載才是合適的。原因是,除非在應用領域中使用運算子是眾所周知且沒有爭議的,否則很難理解運算子應用背後的語義。
  • 2. 始終堅持運算子眾所周知的語義。C++ 對過載運算子的語義沒有限制。您的編譯器可以愉快地接受實現二元 + 運算子從其右側運算元進行計算的程式碼。但是,此類運算子的使用者永遠不會懷疑表示式 a + b 會將 a 從 b 中減去。
  • 3. 始終提供一組相關操作中的所有操作。
  • 運算子彼此相關,也與其他操作相關。如果您的型別支援 a + b,使用者會期望也能呼叫 a += b。如果它支援字首遞增 ++a,他們會期望 a++ 也能工作。如果他們可以檢查 a < b,他們肯定也期望能夠檢查 a > b。如果他們可以複製構造您的型別,他們會期望賦值也能工作。
  • 在大多數情況下,您不需要運算子過載,並且只應在運算子定義明確且非常適合這種情況時才進行過載。這篇文章的靈感來自 https://stackoverflow.com/a/4421708/3719089.

更新於:2020年6月19日

349 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.