作者 主題: 請問operator+  (閱讀 4150 次)

0 會員 與 1 訪客 正在閱讀本文。

Quota

  • 活潑的大學生
  • ***
  • 文章數: 352
    • 檢視個人資料
    • http://home.kimo.com.tw/jiannrongkimo/
請問operator+
« 於: 2008-03-10 11:28 »
我想請問,現在我有三個時間物件要相加,
物件相加使用的是operator+的方式,
請問const simpletime &st的目的是?
而我有三個物件,所以這三個物件會如何相加呢?
simpletime simpletime::operator+(const simpletime &st)
{
    int hour_buf, minute_buf, total;
    total = (hour*60+minute) + (st.hour*60+st.minute); 
    hour_buf = total / 60;
    minute_buf = total % 60;
    return simpletime(hour_buf, minute_buf);
}
int main()
{
    simpletime st1(5, 30);
    simpletime st2(2, 50);
    simpletime st3(4, 20);
    simpletime st4;
    st4 = st1 + st2+st3;
    cout << st4.hour << "時" << st4.minute << "分" << endl;
    system("pause");
   return 0;
}
附上完整程式碼:
#include <iostream>
using namespace std;
class simpletime{
public:
    simpletime(){};
    simpletime(int h, int m){
        hour = h;
        minute = m;
    }
    simpletime operator+(const simpletime &st);
    int hour;
    int minute;
};
simpletime simpletime::operator+(const simpletime &st)
{
    int hour_buf, minute_buf, total;
    total = (hour*60+minute) + (st.hour*60+st.minute); 
    hour_buf = total / 60;
    minute_buf = total % 60;
    return simpletime(hour_buf, minute_buf);
}
int main()
{
    simpletime st1(5, 30);
    simpletime st2(2, 50);
    simpletime st3(4, 20);
    simpletime st4;
    st4 = st1 + st2+st3;
    cout << st4.hour << "時" << st4.minute << "分" << endl;
   return 0;
}
請問這方面網路上有參考資料可參考嗎?
謝謝!

internet_people

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
回覆: 請問operator+
« 回覆 #1 於: 2008-03-25 00:45 »
請問const simpletime &st的目的是?
傳參考(位址)共用相同的位址,而const關鍵字是不可修改物件的成員變數

而我有三個物件,所以這三個物件會如何相加呢?
看你operator+的語意應是運算後指派至物件的成員變數

基本上operator只是一種函數的別名(編譯器會幫你做代換),有興趣可以看看反組譯碼

而我有三個物件,所以這三個物件會如何相加呢?

st4 = st1 + st2+st3;
會呼叫simpletime simpletime::operator+(const simpletime &st)兩次,因為有兩個+
(運算後指派至物件的成員變數,再返回新的件物)