C++Note 运算符重载 左移 operaotr<<

左移运算符重载  作用:可以输出自定义数据类型

写新的函数的时候不知道返回什么    先写为 void  之后根据实际情况更改。

void operator<<(ostream& cout,Person& p);   

--------    ostream& operator<< (ostream& cout, Person& p);

因为输出需要cout和Person的对象

左移运算符需要一个cout(cout是ostream 的成员函数,且全局只有一个 因此需要引用取别名)

void无法进行链式编程(无法使用 endl),因此将左移运算符函数的cout返回

返回的cout的类型为 ostream&   因此将void改为 ostream

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 //左移运算符重载
 4 class Person
 5 {
 6     friend ostream& operator<< (ostream& cout, Person& p);//友元的使用是为了将变量私有化
 7 public:
 8     Person(int a, int b)
 9     {
10         m_A = a;
11         m_B = b;
12     }
13 private:
14     //利用成员函数重载  左移运算符
15     //不会利用成员函数重载  <<运算符  因为无法实现cout在左侧
16     //void operaotr<<(cout)
17     int m_A;
18     int m_B;
19 };
20 //只能利用全局函数重载左移运算符
21 //本质  operator<<(cout,p)简化 cout<<p
22 //返回ostream类型  否则test中输出语句不能使用 endl  因为没有ostream cout返回类型
23 ostream& operator<< (ostream& cout, Person& p)
24 {
25     cout << "m_A = " << p.m_A <<"\n" << "m_B = " << p.m_B;
26     return cout;//可以将cout改为out或其他别名 也可以正常使用
27 }
28 void test()
29 {
30     Person p(10,10);
31     cout << p << endl;
32 }
33 int main()
34 {
35     test();
36     system("pause");
37     return 0;
38 }
复制代码

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

posted on   廿陆  阅读(11)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示