1. #include<iostream>
    2. using namespace std;
    3. class Person
    4. {
    5. friend ostream &operator<<(ostream &cout,Person p);
    6. public:
    7. Person(int m_a,int m_b);
    8. private:
    9. int a;
    10. int b;
    11. //利用成员函数进行重载 左移运算符 p.operator<<(cout) 简化版本 p<<cout
    12. // void operator<<(cout)//一般情况下不用成员函数进行重载 因为无法满足cout在左边
    13. // {
    14. //
    15. // }
    16. };
    17. //只能利用全局函数重载左移运算符。
    18. ostream &operator<<(ostream &cout,Person p)//ostream是cout的数据类型(输出流类型)
    19. {
    20. cout<<p.a<<endl;
    21. cout<<p.b;
    22. return cout;//实现链式编程思想 若没有此cout 则下面的函数只能cout一次。
    23. }
    24. Person::Person(int m_a,int m_b)
    25. {
    26. a=m_a;
    27. b=m_b;
    28. }
    29. void show()
    30. {
    31. Person p(10,10);
    32. cout<<p;
    33. }
    34. int main()
    35. {
    36. show();
    37. return 0;
    38. }

    总结:重载左移运算符配合友元可以实现输出自定义数据类型。

    网址https://www.bilibili.com/video/BV1et411b73Z?p=122