#include <iostream>
using namespace std;
class Person
{
public:
int m_A;
int m_B;
};
ostream &operator<<(ostream &out,Person& p)
{
out << "m_A=" << p.m_A << " m_B=" << p.m_B;
return out;
}
void test01()
{
Person p;
p.m_A = 10;
p.m_B = 10;
cout << p << endl;
}
int main()
{
test01();
system("pause");
}
关于C++左移运算符重载,为什么我可以把cout改成out,改了之后下面调用还能用cout输出
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
bostonAlen 2022-04-18 23:11关注c++机制就是这样规定的,当你重载了自定义的类型的操作符<<,就意味着你可以使用cout输出自定义的类型。
假如这里你不实现ostream &operator<<(ostream &out,Person& p)这个函数,你就无法使用cout << p << endl;这句代码
另外你的out << "m_A=" << p.m_A << " m_B=" << p.m_B;可以随意更改成喜欢的形式,例如out << "m_A:" << p.m_A << " m_B:" << p.m_B;
c++通过这样的机制让我们可以更灵活的去实现自定义类型的输出,
ostream &out在这里是输出流,你可以简单了解,不用去深究,知道重载和怎么去写重载就够了,
传递的参数和返回的参数为什么是引用、以及我随便给你一个类型怎么去写重载<<运算符的函数,而且我们为什么常常会将这样的函数声明为friend 友元,这才是你该关注的本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录