嘿,我得到了一些我无法理解的东西,有两种类型的解决方案用于重载此运算符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