C++ 运算符重载(二)之左移运算符重载
左移运算符重载
作用:可以输出自定义数据类型
1.利用成员函数实现左移运算符
复制代码
上代码使用成员函数重载左移运算符的局限:成员函数 p << p 不是我们想要的效果,想要 cout<<p
2.利用全局函数实现左移重载
复制代码
上面的代码的局限性:输出结果无换行,若改为 cout<<p<<endl;会报错,因为链式不成立,cout<<p 是一个函数的调用,返回值是 void,需要返回 cout 类型才能与 endl;形成链式编程思想。
优化:
复制代码
PS:ostream& operator<<(ostream& out, Person& p){};
此处的Person& p
是否使用 &对本程序没有影响,使用 &指将 p1 传入,而不加 &指拷贝构造一份 p1 后传入,不管是拷贝还是 p1 还是拷贝后的 p1 都打印的 p1 的内容。
总结:重载左移运算符配合友元可以实现输出自定义数据类型
评论