همانطوری که اطلاع دارید ما توی c++ دو نوع overload داریم overload کردن توابع عضو کلاس و توابع معمولی. در این مورد شما باید از مورد دوم استفاده کنید.
برای اینکار باید عملگر >> را overload نمائید به صورت زیر :
class MyClass
{
public:
MyClass(int x,int y):x_(x),y_(y) {}
int x_,y_;
};
ostream &operator<<(ostream &stream,const MyClass &obj){
stream << obj.x_ << endl << obj.y_ << endl;
return stream;
}
int main()
{
MyClass a(10,12);
cout <<a;
}
در برخی از شرایط پیش میاد که شما قصد دارید که عناصر داده ای private کلاس مورد نظر را دسترسی داشته باشید که در حالت بالا امکان پذیر نیست به همین علت باید Overload عملگر >> را برای کلاس به صورت friend مشخص نمائید تا تابع Overload بتواند به اعضای private کلاس هم دسترسی داشته باشد.که در این صورت باید به صورت زیر عمل کنید.
class MyClass
{
public:
MyClass(int x,int y):x_(x),y_(y) {}
friend ostream &operator << (ostream &stream,const MyClass &obj);
private:
int x_,y_;
};
ostream &operator<<(ostream &stream,const MyClass &obj){
stream << obj.x_ << endl << obj.y_ << endl;
return stream;
}
int main()
{
MyClass a(10,12);
cout <<a;
}