эй, я получил то, что я не могу понять, есть два типа решений для перегрузки этого оператора. 1 включает в себя друга в начале метода, а другой 1 идет без друга. Мне очень понравилось бы, если бы некоторые объяснили, в чем разница между ними преимуществами/недостатками. , например, перегрузка оператора < < в классе рациональных:перегрузка оператора << в 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 может исправить меня об этом я бы очень appriciate его. благодарит заранее.
http://stackoverflow.com/questions/236801/should-operator-be-implemented-as-a-friend-or-as-a-member-function – DumbCoder
http://stackoverflow.com/ вопросы/2458459/why-friend-function-is-preferred-to-member-function-for-operator – DumbCoder
http://stackoverflow.com/questions/2828280/c-beginner-friend-functions-and-operator-overloading- что-есть-правильное/ – sbi