2010年8月19日 星期四

operator overloading

operator 即是運算子,在利用 C++ 編寫程式時,operator overloading 是很常用到的,例如果我們自己實作了一個類別,一個漂亮的 ComboBox,我們可以在這個 CComboBox 中加入一條函式


CComboBox CComboBox::operator+(const CComboBox &combo)
{
  CComboBox cbRes;
  for(int i = 0; i < this->GetRowsCount(); i++)
  {
    // cbRes.InsertRow(this->Row[i]);
  }
  for(int i = 0; i < combo.GetRowsCount(); i++)
  {
    // cbRes.InsertRow(combo.Row[i]);
  }
  return cbRes;
}


這樣就可以用簡單的 + 號來將兩個 ComboBox 的列相加為新的一個 ComboBox


CComboBox comboAll, comboA, comboB;
comboAll = comboA + comboB;


當然除了 + 號之外 -*/、+=、=、<< 等運算子都是可以實作的…


CComboBox& operator+=(const CComboBox &refCombo)
{
  for(int i = 0; i < refCombo.GetCount(); i ++)
  {
    this.AppendRow(refCombo.Row[i]);
  }
  return this;
}

friend ostream& operator<<(ostream& out, const CComboBox &refCombo)
{
  CString strRes;
  strRes.Empty();
  for(int i = 0; i < refCombo.GetCount(); i ++)
  {
    strRes.AppendFormat(_T("%s\n"), refCombo.Row[i]);
  }
  strRes.RightTrim(_T("\n"));
  out << "All Content" << strRes;
  return out;
};

沒有留言:

張貼留言