场景:如果一个类person中有2个属性,想要同时输出是不可能的,必须要一个一个的指定,然后输出。如下
person p;
cout<<p.m_a<<p.m_b<<endl;
但是直接用cout<<p<<endl;会报错。实现这种直接输出就可以用左值运算符重载实现。
代码实现:
#include<iostream>
using namespace std;
//左移运算符重载
//左移运算符重载配合友元可实现输出自定义数据类型
class person
{
friend ostream& operator<<(ostream &cout, person &p);
public:
person(int a, int b)
{
m_a = a;
m_b = b;
}
private:
int m_a;
int m_b;
};
//只能利用全局函数重载左移运算符
ostream& operator<<(ostream &cout, person &p)
{
cout << "m_a:" << p.m_a << " m_b:" << p.m_b << endl;
return cout; //(实现链式编程)
}
void test()
{
person p(10,10);
cout << p << endl;
}
int main()
{
test();
system("pause");
return 0;
}
运行结果如下: