嘿,我得到了一些我無法理解的東西,有兩種類型的解決方案用於重載此運算符1包括朋友在方法的開始處,另一個沒有朋友。 我會非常喜歡,如果some1解釋什麼是他們之間的差異優勢/劣勢。 例如超載運營< <類理性:在C++中重載<<運算符
class Rational:
{
private: int m_t,m_b;
...
friend ostream& operator<<(ostream& out,const Rational& r) // option 1
{ return out << r.m_t << "/" <<r.m_b;} // continue of option 1
ostream& operator<<(ostream& out,const Rational& r){return r.print();} // option 2
virtual ostream& print(ostream& out) const // continue of option 2
{ //
return out<<m_t << "/" << m_b;
} //
};
有人告訴我,第二個選項心不是正確的,如果some1可以糾正我吧,我會多它並欣賞。 在此先感謝。
http://stackoverflow.com/questions/236801/should-operator-be-implemented-as-a-friend-or-as-a-member-function – DumbCoder 2010-10-04 14:48:12
http://stackoverflow.com/問題/ 2458459/why-friend-function-is-preferred-to-member-function-for-operator – DumbCoder 2010-10-04 14:48:33
http://stackoverflow.com/questions/2828280/c-beginner-friend-functions-and-operator-overloading-什麼是適當的/ – sbi 2010-10-04 20:37:24