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 }
总结:左移运算符配合友元可以实现输出自定义数据类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)