超载<<
对于包含多个成员变量的类,打印每个变量在屏幕上会让人厌烦的快。例如,考虑下面的类:
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);
|