左移运算符重载
- 通常不会利用成员函数重载左移运算符。因为如果按照
类名 operator <<(ostream &cout)
,那么实例化一个对象p,调用时简化版本为p << cout ;
,这和想要实现的就相反了。
1 |
|
可以利用全局函数重载左移运算符。
注意:
(1)cout 做形参时只能是引用。c++中std::ostream这个类只有一个实例 cout ,按值传递相当于在重载函数 中又定义了一个 ostream 实例,只是不允许的,但是使用引用传递的话便还是原来的 cout,只是作为一个别名存在。
(2)为了实现链式输出,返回值需要为 cout ,所以函数返回值类型为 ostream &
(3)注意形参可以写成其他的名字,比如 ostream &out,因为 out 相当于是 cout 的别名。
(4)可以配合友元实现输出自定义数据类型
1 |
|