#include<iostream>
using namespace std;
class Person
{
friend ostream &operator<<(ostream &cout,Person p);
public:
Person(int m_a,int m_b);
private:
int a;
int b;
//利用成员函数进行重载 左移运算符 p.operator<<(cout) 简化版本 p<<cout
// void operator<<(cout)//一般情况下不用成员函数进行重载 因为无法满足cout在左边
// {
//
// }
};
//只能利用全局函数重载左移运算符。
ostream &operator<<(ostream &cout,Person p)//ostream是cout的数据类型(输出流类型)
{
cout<<p.a<<endl;
cout<<p.b;
return cout;//实现链式编程思想 若没有此cout 则下面的函数只能cout一次。
}
Person::Person(int m_a,int m_b)
{
a=m_a;
b=m_b;
}
void show()
{
Person p(10,10);
cout<<p;
}
int main()
{
show();
return 0;
}
总结:重载左移运算符配合友元可以实现输出自定义数据类型。