CPoint CPoint::operator+(const CPoint& obj)
{
CPoint tmp;
tmp.m_x = m_x + obj.m_x;
tmp.m_y = m_y + obj.m_y;
return tmp;
}

// +=演算子オーバーロード
CPoint& CPoint::operator+=(const CPoint& obj)
{
m_x += obj.m_x;
m_y += obj.m_y;
return *this;
}

この2つの違いはなんですか?  +=をオーバーロードするときはポインタを返さないといけないんでしょうか?