超载的I / O操作

超载<<

对于包含多个成员变量的类,打印每个变量在屏幕上会让人厌烦的快。例如,考虑下面的类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Point
{
private :
     double m_dX, m_dY, m_dZ;
 
public :
     Point( double dX=0.0, double dY=0.0, double dZ=0.0)
     {
     m_dX = dX;
     m_dY = dY;
     m_dZ = dZ;
     }
 
     double GetX() { return m_dX; }
     double GetY() { return m_dY; }
     double GetZ() { return m_dZ; }
};
如果你 打印 该类的实例 在屏幕上, 你会 这样做
1
2
3
4
Point cPoint(5.0, 6.0, 7.0);
cout << "(" << cPoint.GetX() << ", " <<
     cPoint.GetY() << ", " <<
     cPoint.GetZ() << ")" ;
这仅仅是一个实例! 如果你能 简单地键入 要容易的多
1
2
Point cPoint(5.0, 6.0, 7.0);
cout << cPoint;

并得到了相同的结果。通过重载<<运算符,您可以!重载操作符>>相似的重载操作符+(他们都是二元操作符),除了参数类型是不同的。

考虑表达cout << CPoint。如果运算符<<,操作数是什么?左操作数对象的用户,和右操作数是你的类的对象。法院实际上是ostream类型对象。因此,我们的重载函数将看起来像这样:

1
friend ostream& operator<< (ostream &out, Point &cPoint);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值