Re: [問題] 關於運算子重載(operator overloading)
推
05/25 02:08,
05/25 02:08
→
05/25 02:09,
05/25 02:09
→
05/25 02:09,
05/25 02:09
誠如原文所述,這個情況我個人想法是看 operator* 會否存取到 BigNumber 的私有成
員。如果不會的話,我會選非成員函式。如果會的話,因為這裡符合交換律我會選加
friend 的非成員函式。
所以無論如何我都會選用非成員函式的型式。
因此確實需要定義兩個函式 BigNumber operator*(double lhs, BigNumber rhs) 及
BigNumber operator*(BigNumber lhs, double rhs) [註1]
但是其中之一的實作可以由另外一個達成,例如我們已經實作好前者, 則後者可以這樣
實作:
BigNumber operator*(BigNumber lhs, double rhs) {
return rhs * lhs;
}
當然有另一種選擇是使用隱性轉型將 double 轉為 BigNumber 來解決交換律的問題。
但是因為違反我避免使用隱性轉型的原則所以我的想法是不傾向這樣的作法。
[註1] 這裡的 signature 因為 C++ 版本不同有不同適當的寫法。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.122.83.198
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1432514105.A.A33.html
推
05/25 16:30, , 1F
05/25 16:30, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章