我们在C++中使用输出的时候,
格式一般为: cout << xxx << endl;
那么我们的<<运算符就会出现两个操作数,
cout是第一个操作数,
xxx是第二个操作数。
所以假设我们把<<重载符号写入在类内部,
那么第一个操作数就会变成对象
instance.cout << xxx...
会变成这样的格式,而与我们原本的意图不同。
所以我们在写<<重载函数的时候,需要将重载函数写成全局函数。
然后再把全局函数设置成类的友元函数。
下面我们举例说明:
/****************************************************
* brief : <<运算符重载
* author : shao
* date : 2020-03-10
* note : 左移运算符不能写成类成员函数,
* 因为这样会使得我们在调用的时候,
* 格式和之前的cout不一样,那么就
* 失去了重载的意义。
* 所以,左移运算符我们写成全局友元函数。
* 以后为了方便,我们会默认把成员变量
* 设置成public属性。
*
****************************************************/
#include <iostream>
using namespace std;
class Person{
friend ostream&