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


在C++中,運算子過載有三個基本規則需要遵循。像所有這樣的規則一樣,也有一些例外。這三個規則是:

  • 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 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告